summaryrefslogtreecommitdiff
path: root/qpid/java/bdbstore
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2014-11-06 14:25:34 +0000
committerKeith Wall <kwall@apache.org>2014-11-06 14:25:34 +0000
commitcf5cb805e3b72258a0d4e2ac92d6c54a5aa9ca28 (patch)
tree8bd94db7bc0d69c3985fed2b4f8effcb93d83270 /qpid/java/bdbstore
parent38ac6f471254152c4026769023de49906f434eec (diff)
downloadqpid-python-cf5cb805e3b72258a0d4e2ac92d6c54a5aa9ca28.tar.gz
QPID-6216: [Java Broker] HA: On conditions causing environment restart, notify the BDBHAVHN as early as possible that it is no longer master
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1637117 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/bdbstore')
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java18
1 files changed, 17 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 898c166c7a..675707d4ec 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
@@ -59,6 +59,7 @@ import com.sleepycat.je.SequenceConfig;
import com.sleepycat.je.Transaction;
import com.sleepycat.je.TransactionConfig;
import com.sleepycat.je.rep.*;
+import com.sleepycat.je.rep.impl.node.NameIdPair;
import com.sleepycat.je.rep.util.DbPing;
import com.sleepycat.je.rep.util.ReplicationGroupAdmin;
import com.sleepycat.je.rep.utilint.HostPortPair;
@@ -943,13 +944,28 @@ public class ReplicatedEnvironmentFacade implements EnvironmentFacade, StateChan
{
LOGGER.info("Restarting environment");
+ StateChangeListener stateChangeListener = _stateChangeListener.get();
+
+ if (stateChangeListener != null)
+ {
+ _stateChangeExecutor.submit(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ StateChangeEvent detached = new StateChangeEvent(ReplicatedEnvironment.State.DETACHED, NameIdPair.NULL);
+ stateChanged(detached);
+ }
+ });
+ }
+
closeEnvironmentOnRestart();
createEnvironment(false);
registerAppStateMonitorIfPermittedNodesSpecified();
- if (_stateChangeListener.get() != null)
+ if (stateChangeListener != null)
{
_environment.setStateChangeListener(this);
}