From 3a5e4ce36300573525b96b101b69a0a287e1a8ea Mon Sep 17 00:00:00 2001 From: Domenico Francesco Bruscino Date: Fri, 7 Oct 2022 09:09:07 +0200 Subject: [PATCH] ARTEMIS-4030 Fix SharedStoreLiveActivation race condition DefaultCriticalErrorListener stops the server while SharedStoreLiveActivation is initializing it. --- .../server/impl/SharedStoreLiveActivation.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/SharedStoreLiveActivation.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/SharedStoreLiveActivation.java index b4e2f2ac73..635b6f317b 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/SharedStoreLiveActivation.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/SharedStoreLiveActivation.java @@ -85,16 +85,18 @@ public final class SharedStoreLiveActivation extends LiveActivation { nodeManagerActivateCallback = activeMQServer.getNodeManager().startLiveNode(); activeMQServer.registerActivateCallback(nodeManagerActivateCallback); - if (activeMQServer.getState() == ActiveMQServerImpl.SERVER_STATE.STOPPED + synchronized (activeMQServer) { + if (activeMQServer.getState() == ActiveMQServerImpl.SERVER_STATE.STOPPED || activeMQServer.getState() == ActiveMQServerImpl.SERVER_STATE.STOPPING) { - return; + return; + } + + activeMQServer.initialisePart2(false); + + activeMQServer.completeActivation(false); + + ActiveMQServerLogger.LOGGER.serverIsLive(); } - - activeMQServer.initialisePart2(false); - - activeMQServer.completeActivation(false); - - ActiveMQServerLogger.LOGGER.serverIsLive(); } catch (NodeManagerException nodeManagerException) { if (nodeManagerException.getCause() instanceof ClosedChannelException) { // this is ok, we are being stopped