From cf5cb805e3b72258a0d4e2ac92d6c54a5aa9ca28 Mon Sep 17 00:00:00 2001 From: Keith Wall Date: Thu, 6 Nov 2014 14:25:34 +0000 Subject: 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 --- .../replication/ReplicatedEnvironmentFacade.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'qpid/java/bdbstore') 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); } -- cgit v1.2.1