[ 
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)

Reply via email to