Étienne Hossack created ARTEMIS-3278:
----------------------------------------
Summary: 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
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 with
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 classpath folder just in case:
-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}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)