[ 
https://issues.apache.org/jira/browse/ARTEMIS-3278?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Étienne Hossack updated ARTEMIS-3278:
-------------------------------------
    Description: 
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}

  was:
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}
 


> 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