You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Francesco Nigro (Jira)" <ji...@apache.org> on 2021/02/23 20:31:00 UTC
[jira] [Created] (ARTEMIS-3138) Shared Nothing Live broker
shouldn't try to connect to itself
Francesco Nigro created ARTEMIS-3138:
----------------------------------------
Summary: Shared Nothing Live broker shouldn't try to connect to itself
Key: ARTEMIS-3138
URL: https://issues.apache.org/jira/browse/ARTEMIS-3138
Project: ActiveMQ Artemis
Issue Type: Improvement
Reporter: Francesco Nigro
While starting a shared nothing master broker configured with discovery is performing discovery operations that could end up connecting the broker to itself.
This is happening in different code paths:
* while checking for a live server
* on cluster manager deploy
The former won't end up connecting the broker to itself, because the broker acceptors are still closed, while the latter yep and connection remain established for the whole broker life-time.
The relevant stack traces are:
{code:java}
at org.apache.activemq.artemis.core.cluster.DiscoveryGroup.<init>(DiscoveryGroup.java:96)
at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.createDiscoveryGroup(ServerLocatorImpl.java:298)
at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.startDiscovery(ServerLocatorImpl.java:275)
at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.initialize(ServerLocatorImpl.java:263)
at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:650)
at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.connect(ServerLocatorImpl.java:549)
at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.connectNoWarnings(ServerLocatorImpl.java:555)
at org.apache.activemq.artemis.core.server.impl.SharedNothingLiveActivation.isNodeIdUsed(SharedNothingLiveActivation.java:331)
at org.apache.activemq.artemis.core.server.impl.SharedNothingLiveActivation.run(SharedNothingLiveActivation.java:102)
at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.internalStart(ActiveMQServerImpl.java:634)
at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.start(ActiveMQServerImpl.java:558)
at org.apache.activemq.artemis.integration.FileBroker.start(FileBroker.java:64)
at org.apache.activemq.artemis.cli.commands.Run.execute(Run.java:115)
at org.apache.activemq.artemis.cli.Artemis.internalExecute(Artemis.java:154)
at org.apache.activemq.artemis.cli.Artemis.execute(Artemis.java:102)
at org.apache.activemq.artemis.cli.Artemis.execute(Artemis.java:129)
at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-1)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.activemq.artemis.boot.Artemis.execute(Artemis.java:134)
at org.apache.activemq.artemis.boot.Artemis.main(Artemis.java:50)
{code}
And
{code:java}
at org.apache.activemq.artemis.core.cluster.DiscoveryGroup.<init>(DiscoveryGroup.java:96)
at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.createDiscoveryGroup(ServerLocatorImpl.java:298)
at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.startDiscovery(ServerLocatorImpl.java:275)
at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.initialize(ServerLocatorImpl.java:263)
at org.apache.activemq.artemis.core.server.cluster.ClusterController.configAndAdd(ClusterController.java:230)
at org.apache.activemq.artemis.core.server.cluster.ClusterController.addClusterConnection(ClusterController.java:197)
at org.apache.activemq.artemis.core.server.cluster.ClusterManager.deployClusterConnection(ClusterManager.java:612)
at org.apache.activemq.artemis.core.server.cluster.ClusterManager.deploy(ClusterManager.java:245)
at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.initialisePart1(ActiveMQServerImpl.java:3066)
at org.apache.activemq.artemis.core.server.impl.SharedNothingLiveActivation.run(SharedNothingLiveActivation.java:114)
at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.internalStart(ActiveMQServerImpl.java:634)
at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.start(ActiveMQServerImpl.java:558)
at org.apache.activemq.artemis.integration.FileBroker.start(FileBroker.java:64)
at org.apache.activemq.artemis.cli.commands.Run.execute(Run.java:115)
at org.apache.activemq.artemis.cli.Artemis.internalExecute(Artemis.java:154)
at org.apache.activemq.artemis.cli.Artemis.execute(Artemis.java:102)
at org.apache.activemq.artemis.cli.Artemis.execute(Artemis.java:129)
at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-1)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.activemq.artemis.boot.Artemis.execute(Artemis.java:134)
at org.apache.activemq.artemis.boot.Artemis.main(Artemis.java:50)
{code}
On both cases, the same broker transport isn't ignored because the discovery started using a randomly generated NodeiD on the server locator, instead of using the broker real Node ID.
The subsequent cluster manager start will start, instead, setting the broker Node ID on the sever locator while its cluster connection is activated.
The relevant stack trace is:
{code:java}
at org.apache.activemq.artemis.core.cluster.DiscoveryGroup.<init>(DiscoveryGroup.java:96)
at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.createDiscoveryGroup(ServerLocatorImpl.java:298)
at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.startDiscovery(ServerLocatorImpl.java:275)
at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.initialize(ServerLocatorImpl.java:263)
at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.start(ServerLocatorImpl.java:477)
at org.apache.activemq.artemis.core.server.cluster.impl.ClusterConnectionImpl.activate(ClusterConnectionImpl.java:680)
at org.apache.activemq.artemis.core.server.cluster.impl.ClusterConnectionImpl.start(ClusterConnectionImpl.java:399)
at org.apache.activemq.artemis.core.server.cluster.ClusterManager.start(ClusterManager.java:270)
at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.initialisePart2(ActiveMQServerImpl.java:3225)
at org.apache.activemq.artemis.core.server.impl.SharedNothingLiveActivation.run(SharedNothingLiveActivation.java:118)
at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.internalStart(ActiveMQServerImpl.java:634)
at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.start(ActiveMQServerImpl.java:558)
at org.apache.activemq.artemis.integration.FileBroker.start(FileBroker.java:64)
at org.apache.activemq.artemis.cli.commands.Run.execute(Run.java:115)
at org.apache.activemq.artemis.cli.Artemis.internalExecute(Artemis.java:154)
at org.apache.activemq.artemis.cli.Artemis.execute(Artemis.java:102)
at org.apache.activemq.artemis.cli.Artemis.execute(Artemis.java:129)
at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-1)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.activemq.artemis.boot.Artemis.execute(Artemis.java:134)
at org.apache.activemq.artemis.boot.Artemis.main(Artemis.java:50)
{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)