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