summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2014-10-30 16:57:36 +0000
committerKeith Wall <kwall@apache.org>2014-10-30 16:57:36 +0000
commit6c4648a65b1b8679beeeedc55bb12c2bf416aab1 (patch)
treed3313487d4ef1cb54e0c760bd8f355afa80f05e5 /qpid/java
parent2efeca0609bbc700b35ed464743471149c6ac560 (diff)
downloadqpid-python-6c4648a65b1b8679beeeedc55bb12c2bf416aab1.tar.gz
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
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java5
1 files changed, 4 insertions, 1 deletions
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> _state = new AtomicReference<State>(State.OPENING);
private final ConcurrentMap<String, ReplicationNode> _remoteReplicationNodes = new ConcurrentHashMap<String, ReplicationNode>();
@@ -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()