Author: kwall
Date: Thu Oct 30 16:57:36 2014
New Revision: 1635547

URL: http://svn.apache.org/r1635547
Log:
QPID-6201: [Java Broker] HA use separate single thread executor to deliver JE 
state change events

Modified:
    
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java

Modified: 
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java?rev=1635547&r1=1635546&r2=1635547&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java
 (original)
+++ 
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java
 Thu Oct 30 16:57:36 2014
@@ -167,6 +167,7 @@ public class ReplicatedEnvironmentFacade
     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
 
         // 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
                                                 timeout,
                                                 TimeUnit.MILLISECONDS);
                 shutdownAndAwaitExecutorService(_groupChangeExecutor, 
_executorShutdownTimeout, TimeUnit.MILLISECONDS);
+                shutdownAndAwaitExecutorService(_stateChangeExecutor, 
_executorShutdownTimeout, TimeUnit.MILLISECONDS);
 
                 try
                 {
@@ -562,7 +565,7 @@ public class ReplicatedEnvironmentFacade
 
         if (_state.get() != State.CLOSING && _state.get() != State.CLOSED)
         {
-            _groupChangeExecutor.submit(new Runnable()
+            _stateChangeExecutor.submit(new Runnable()
             {
                 @Override
                 public void run()



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to