From 68faa1d25245c45c15cf79cdc0ef25e0881baa61 Mon Sep 17 00:00:00 2001 From: Clebert Suconic Date: Tue, 19 Jan 2016 11:14:16 -0500 Subject: [PATCH] ARTEMIS-350 Small improvement on the replication stop --- .../core/replication/ReplicationManager.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/replication/ReplicationManager.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/replication/ReplicationManager.java index 74f9906b21..3c2d2367b5 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/replication/ReplicationManager.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/replication/ReplicationManager.java @@ -263,14 +263,17 @@ public final class ReplicationManager implements ActiveMQComponent, ReadyListene if (!started) { return; } - replicatingChannel.getConnection().getTransportConnection().fireReady(true); - latch.setCount(0); + + enabled = false; + + // This is to avoid the write holding a lock while we are trying to close it + if (replicatingChannel != null) { + replicatingChannel.close(); + replicatingChannel.getConnection().getTransportConnection().fireReady(true); + latch.setCount(0); + } synchronized (replicationLock) { - enabled = false; - if (replicatingChannel != null) { - replicatingChannel.close(); - } clearReplicationTokens(); } @@ -278,7 +281,6 @@ public final class ReplicationManager implements ActiveMQComponent, ReadyListene if (toStop != null) { toStop.removeFailureListener(failureListener); } - remotingConnection = null; started = false; }