You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Justin Bertram (Jira)" <ji...@apache.org> on 2021/05/03 23:23:00 UTC
[jira] [Commented] (ARTEMIS-3278) Artemis (classloader) is unable
to find jgroups configuration file
[ https://issues.apache.org/jira/browse/ARTEMIS-3278?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17338664#comment-17338664 ]
Justin Bertram commented on ARTEMIS-3278:
-----------------------------------------
FWIW, a lot of folks don't have access to the ASF Slack channel since it is invite only (i.e. not public). It would be ideal to outline the user error here in Jira for posterity's sake.
> Artemis (classloader) is unable to find jgroups configuration file
> ------------------------------------------------------------------
>
> Key: ARTEMIS-3278
> URL: https://issues.apache.org/jira/browse/ARTEMIS-3278
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Components: Broker, Configuration
> Affects Versions: 2.17.0
> Reporter: Étienne Hossack
> Priority: Major
> Attachments: jgroups-file-ping.xml
>
>
> The artemis broker is unable to use the jgroups configuration as per documented. This issue is present both running on a system directly, or running within docker. Will explain docker approach. I have tested this on my machine, and a teammates machine.
>
> Steps to Reproduce (high level, detailed below):
> # In artemis-docker directory, build dockerfile
> # Add jgroups config to container
> # modify broker xml to reference container
> # restart broker (config is not reloaded)
> # *broker crashes*
>
> An exception is thrown by the config loader: [https://github.com/apache/activemq-artemis/blob/e364961c8f035613f3ce4e3bdb3430a17efb0ffd/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/JGroupsFileBroadcastEndpoint.java#L42]
> despite the classpath supposedly having been altered: [https://github.com/apache/activemq-artemis/blob/main/artemis-boot/src/main/java/org/apache/activemq/artemis/boot/Artemis.java#L82]
> I have tried this by manually adding the folder to the classpath in startup args just in case (as in the [profile|https://github.com/apache/activemq-artemis/blob/main/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/artemis.profile#L40]):
> -Xbootclasspath/a:$ARTEMIS_INSTANCE_ETC
>
> {code:java}
> ./prepare-docker.sh --from-release --artemis-version 2.17.0
> cd _TMP_/artemis/2.17.0
> docker build -f ./docker/Dockerfile-adoptopenjdk-11 -t artemis-adoptopenjdk-11 .
> docker run --name artemis -d -P -e EXTRA_ARGS="--clustered" artemis-adoptopenjdk-11:latest
> docker cp jgroups-file-ping.xml artemis:/var/lib/artemis-instance/etc/
> docker exec -u root -it artemis bash
> # in container edit using your editor of choice
> mkdir /etc/jgroups && chmod -R 777 /etc/jgroups
> apt-get update && apt-get install -y vim
> vim etc/broker.xml
> # modify and replace xml elements:
> <broadcast-groups>
> <broadcast-group name="jgroups-broadcast-group">
> <broadcast-period>2000</broadcast-period>
> <jgroups-file>/var/lib/artemis/instance/etc/jgroups-file-ping.xml</jgroups-file>
> <jgroups-channel>activemq_broadcast_channel</jgroups-channel>
> <connector-ref>artemis</connector-ref>
> </broadcast-group>
> </broadcast-groups>
> <discovery-groups>
> <discovery-group name="jgroups-discovery-group">
> <jgroups-file>/var/lib/artemis/instance/etc/jgroups-file-ping.xml</jgroups-file>
> <jgroups-channel>activemq_broadcast_channel</jgroups-channel>
> <refresh-timeout>10000</refresh-timeout>
> </discovery-group>
> </discovery-groups>
> <cluster-connections>
> <cluster-connection name="my-cluster">
> <connector-ref>artemis</connector-ref>
> <message-load-balancing>ON_DEMAND</message-load-balancing>
> <max-hops>0</max-hops>
> <discovery-group-ref discovery-group-name="jgroups-discovery-group"/>
> </cluster-connection>
> </cluster-connections>
> # exit. force reload
> docker stop artemis
> docker restart artemis && docker attach artemis
> {code}
>
> *Expected:* Broker then starts with jgroups discovery enabled using the aforementioned filepine directory or complains about invalid configuration
> *Actual:* Broker fails to start:
> {noformat}
> 2021-05-03 11:46:43,829 INFO [org.apache.activemq.artemis.core.server] AMQ221000: live Message Broker is starting with configuration Broker Configuration (clustered=true,journalDirectory=data/journal,bindingsDirectory=data/bindings,largeMessagesDirectory=data/large-messages,pagingDirectory=data/paging)2021-05-03 11:46:43,829 INFO [org.apache.activemq.artemis.core.server] AMQ221000: live Message Broker is starting with configuration Broker Configuration (clustered=true,journalDirectory=data/journal,bindingsDirectory=data/bindings,largeMessagesDirectory=data/large-messages,pagingDirectory=data/paging)2021-05-03 11:46:43,870 INFO [org.apache.activemq.artemis.core.server] AMQ221013: Using NIO Journal2021-05-03 11:46:43,936 INFO [org.apache.activemq.artemis.core.server] AMQ221057: Global Max Size is being adjusted to 1/2 of the JVM max size (-Xmx). being defined as 1,073,741,8242021-05-03 11:46:43,953 ERROR [org.apache.activemq.artemis.core.server] AMQ224000: Failure in initialisation: java.lang.RuntimeException: couldn't find JGroups configuration etc/jgroups-file-ping.xml at org.apache.activemq.artemis.api.core.JGroupsFileBroadcastEndpoint.createChannel(JGroupsFileBroadcastEndpoint.java:43) [artemis-core-client-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.api.core.jgroups.JChannelManager.getJChannel(JChannelManager.java:74) [artemis-core-client-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.api.core.JGroupsBroadcastEndpoint.initChannel(JGroupsBroadcastEndpoint.java:108) [artemis-core-client-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.api.core.JGroupsFileBroadcastEndpointFactory.createBroadcastEndpoint(JGroupsFileBroadcastEndpointFactory.java:31) [artemis-core-client-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.core.server.cluster.impl.BroadcastGroupImpl.<init>(BroadcastGroupImpl.java:89) [artemis-server-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.core.server.cluster.ClusterManager.createBroadcastGroup(ClusterManager.java:655) [artemis-server-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.core.server.cluster.ClusterManager.deployBroadcastGroup(ClusterManager.java:646) [artemis-server-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.core.server.cluster.ClusterManager.deploy(ClusterManager.java:241) [artemis-server-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.initialisePart1(ActiveMQServerImpl.java:3087) [artemis-server-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.core.server.impl.LiveOnlyActivation.run(LiveOnlyActivation.java:68) [artemis-server-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.internalStart(ActiveMQServerImpl.java:635) [artemis-server-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.start(ActiveMQServerImpl.java:559) [artemis-server-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.integration.FileBroker.start(FileBroker.java:64) [artemis-cli-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.cli.commands.Run.execute(Run.java:115) [artemis-cli-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.cli.Artemis.internalExecute(Artemis.java:154) [artemis-cli-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.cli.Artemis.execute(Artemis.java:102) [artemis-cli-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.cli.Artemis.execute(Artemis.java:129) [artemis-cli-2.17.0.jar:2.17.0] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [java.base:] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [java.base:] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [java.base:] at java.base/java.lang.reflect.Method.invoke(Method.java:566) [java.base:] at org.apache.activemq.artemis.boot.Artemis.execute(Artemis.java:134) [artemis-boot.jar:2.17.0] at org.apache.activemq.artemis.boot.Artemis.main(Artemis.java:50) [artemis-boot.jar:2.17.0]
> 2021-05-03 11:46:43,957 INFO [org.apache.activemq.artemis.core.server] AMQ221001: Apache ActiveMQ Artemis Message Broker version 2.17.0 [147dda9eb260.ant.amazon.com, nodeID=a965a516-ac3f-11eb-a290-0050b68c6d16]2021-05-03 11:46:44,214 INFO [org.apache.activemq.hawtio.branding.PluginContextListener] Initialized activemq-branding plugin2021-05-03 11:46:44,274 INFO [org.apache.activemq.hawtio.plugin.PluginContextListener] Initialized artemis-plugin plugin2021-05-03 11:46:44,586 INFO [io.hawt.HawtioContextListener] Initialising hawtio services2021-05-03 11:46:44,620 INFO [io.hawt.system.ConfigManager] Configuration will be discovered via system properties2021-05-03 11:46:44,622 INFO [io.hawt.jmx.JmxTreeWatcher] Welcome to Hawtio 2.11.02021-05-03 11:46:44,627 INFO [io.hawt.web.auth.AuthenticationConfiguration] Starting hawtio authentication filter, JAAS realm: "activemq" authorized role(s): "amq" role principal classes: "org.apache.activemq.artemis.spi.core.security.jaas.RolePrincipal"2021-05-03 11:46:44,651 INFO [io.hawt.web.proxy.ProxyServlet] Proxy servlet is disabled2021-05-03 11:46:44,658 INFO [io.hawt.web.servlets.JolokiaConfiguredAgentServlet] Jolokia overridden property: [key=policyLocation, value=file:/Volumes/workplace/AmazonMqArtemisPrototyping/src/AmazonMqArtemisPrototyping/bin/broker/artemis/etc/jolokia-access.xml]2021-05-03 11:46:44,785 INFO [org.apache.activemq.artemis] AMQ241001: HTTP Server started at http://localhost:81612021-05-03 11:46:44,785 INFO [org.apache.activemq.artemis] AMQ241002: Artemis Jolokia REST API available at http://localhost:8161/console/jolokia2021-05-03 11:46:44,786 INFO [org.apache.activemq.artemis] AMQ241004: Artemis Console available at http://localhost:8161/console2021-05-03 11:46:44,787 ERROR [org.apache.activemq.artemis.core.server] AMQ224068: Unable to stop component: org.apache.activemq.artemis.core.server.management.impl.ManagementServiceImpl: java.lang.NullPointerException at org.apache.activemq.artemis.core.server.management.impl.ManagementServiceImpl.unregisterServer(ManagementServiceImpl.java:247) [artemis-server-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.stop(ActiveMQServerImpl.java:1307) [artemis-server-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.stop(ActiveMQServerImpl.java:1166) [artemis-server-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.stop(ActiveMQServerImpl.java:1138) [artemis-server-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.stop(ActiveMQServerImpl.java:949) [artemis-server-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.integration.FileBroker.stop(FileBroker.java:92) [artemis-cli-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.cli.commands.Run.stop(Run.java:201) [artemis-cli-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.cli.commands.Run.execute(Run.java:131) [artemis-cli-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.cli.Artemis.internalExecute(Artemis.java:154) [artemis-cli-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.cli.Artemis.execute(Artemis.java:102) [artemis-cli-2.17.0.jar:2.17.0] at org.apache.activemq.artemis.cli.Artemis.execute(Artemis.java:129) [artemis-cli-2.17.0.jar:2.17.0] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [java.base:] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [java.base:] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [java.base:] at java.base/java.lang.reflect.Method.invoke(Method.java:566) [java.base:] at org.apache.activemq.artemis.boot.Artemis.execute(Artemis.java:134) [artemis-boot.jar:2.17.0] at org.apache.activemq.artemis.boot.Artemis.main(Artemis.java:50) [artemis-boot.jar:2.17.0]
> 2021-05-03 11:46:44,826 INFO [io.hawt.web.auth.AuthenticationFilter] Destroying hawtio authentication filter2021-05-03 11:46:44,827 INFO [io.hawt.HawtioContextListener] Destroying hawtio services2021-05-03 11:46:44,854 INFO [org.apache.activemq.hawtio.plugin.PluginContextListener] Destroyed artemis-plugin plugin2021-05-03 11:46:44,863 INFO [org.apache.activemq.hawtio.branding.PluginContextListener] Destroyed activemq-branding plugin2021-05-03 11:46:44,892 INFO [org.apache.activemq.artemis.core.server] AMQ221002: Apache ActiveMQ Artemis Message Broker version 2.17.0 [a965a516-ac3f-11eb-a290-0050b68c6d16] stopped, uptime 1.073 seconds{noformat}
> Reproduction steps on local machine:
> {noformat}
> mkdir -p ./bin/artemis
> tar xzf ./bin/artemis.tar.gz --directory ./bin/artemis --strip 1
> mkdir -p bin/broker/artemis
> bin/artemis/bin/artemis create --user artemis --password password --allow-anonymous --relax-jolokia --clustered --host hostname bin/broker/artemis
> ...
> --cluster-user: is a mandatory property!
> Please provide the username:
> cluster-user
> --cluster-password: is mandatory with this configuration:
> Please enter the password:
> password
> # edit xml as above
> ./bin/broker/artemis/bin/artemis run{noformat}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)