You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2022/11/28 15:03:54 UTC
[activemq-artemis] 06/13: ARTEMIS-4030 Fix SharedStoreLiveActivation race condition
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 <br...@apache.org>
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