From 6c4648a65b1b8679beeeedc55bb12c2bf416aab1 Mon Sep 17 00:00:00 2001 From: Keith Wall Date: Thu, 30 Oct 2014 16:57:36 +0000 Subject: QPID-6201: [Java Broker] HA use separate single thread executor to deliver JE state change events git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1635547 13f79535-47bb-0310-9956-ffa450edef68 --- .../store/berkeleydb/replication/ReplicatedEnvironmentFacade.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'qpid/java') diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java index 8a23e5fe82..81839a65ab 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java @@ -167,6 +167,7 @@ public class ReplicatedEnvironmentFacade implements EnvironmentFacade, StateChan private final File _environmentDirectory; private final ExecutorService _environmentJobExecutor; + private final ExecutorService _stateChangeExecutor; private final ScheduledExecutorService _groupChangeExecutor; private final AtomicReference _state = new AtomicReference(State.OPENING); private final ConcurrentMap _remoteReplicationNodes = new ConcurrentHashMap(); @@ -216,6 +217,7 @@ public class ReplicatedEnvironmentFacade implements EnvironmentFacade, StateChan // we relay on this executor being single-threaded as we need to restart and mutate the environment in one thread _environmentJobExecutor = Executors.newSingleThreadExecutor(new DaemonThreadFactory("Environment-" + _prettyGroupNodeName)); + _stateChangeExecutor = Executors.newSingleThreadExecutor(new DaemonThreadFactory("StateChange-" + _prettyGroupNodeName)); _groupChangeExecutor = Executors.newScheduledThreadPool(Runtime.getRuntime().availableProcessors() + 1, new DaemonThreadFactory("Group-Change-Learner:" + _prettyGroupNodeName)); // create environment in a separate thread to avoid renaming of the current thread by JE @@ -298,6 +300,7 @@ public class ReplicatedEnvironmentFacade implements EnvironmentFacade, StateChan timeout, TimeUnit.MILLISECONDS); shutdownAndAwaitExecutorService(_groupChangeExecutor, _executorShutdownTimeout, TimeUnit.MILLISECONDS); + shutdownAndAwaitExecutorService(_stateChangeExecutor, _executorShutdownTimeout, TimeUnit.MILLISECONDS); try { @@ -562,7 +565,7 @@ public class ReplicatedEnvironmentFacade implements EnvironmentFacade, StateChan if (_state.get() != State.CLOSING && _state.get() != State.CLOSED) { - _groupChangeExecutor.submit(new Runnable() + _stateChangeExecutor.submit(new Runnable() { @Override public void run() -- cgit v1.2.1