This is an automated email from the ASF dual-hosted git repository.

clebertsuconic pushed a commit to branch 2.27.x
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git

commit f81134d748c9eb0427adbe578bfac74faae9f77f
Author: Domenico Francesco Bruscino <[email protected]>
AuthorDate: Fri Oct 7 09:09:07 2022 +0200

    ARTEMIS-4030 Fix SharedStoreLiveActivation race condition
    
    DefaultCriticalErrorListener stops the server while 
SharedStoreLiveActivation
    is initializing it.
    
    (cherry picked from commit 3a5e4ce36300573525b96b101b69a0a287e1a8ea)
---
 .../core/server/impl/SharedStoreLiveActivation.java        | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 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.initialisePart2(false);
 
-         activeMQServer.completeActivation(false);
+            activeMQServer.completeActivation(false);
 
-         ActiveMQServerLogger.LOGGER.serverIsLive();
+            ActiveMQServerLogger.LOGGER.serverIsLive();
+         }
       } catch (NodeManagerException nodeManagerException) {
          if (nodeManagerException.getCause() instanceof 
ClosedChannelException) {
             // this is ok, we are being stopped

Reply via email to