summaryrefslogtreecommitdiff
path: root/qpid/java/bdbstore/src/main
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2014-05-24 19:39:56 +0000
committerAlex Rudyy <orudyy@apache.org>2014-05-24 19:39:56 +0000
commit54f3d64a0be7bac227ac1721ee4536152405b2c9 (patch)
treedf2b2d8ed7a4bf1e54b432bfc8bf29ac110e3ee8 /qpid/java/bdbstore/src/main
parent54a17de77d2723d30098ec0790a320077d85270d (diff)
downloadqpid-python-54f3d64a0be7bac227ac1721ee4536152405b2c9.tar.gz
QPID-5715: On virtual host node deletion delete virtual host first, in order to allow listeners to hear virtual host deletion. JMX Management needs to unregister virtual host MBean on host deletion
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1597340 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/bdbstore/src/main')
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java9
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java23
2 files changed, 25 insertions, 7 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 91e73324bc..3eabaf1c73 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
@@ -1034,8 +1034,7 @@ public class ReplicatedEnvironmentFacade implements EnvironmentFacade, StateChan
return new DbPing(repNode, (String)_configuration.getGroupName(), DB_PING_SOCKET_TIMEOUT).getNodeState();
}
- // For testing only
- int getNumberOfElectableGroupMembers()
+ public int getNumberOfElectableGroupMembers()
{
if (_state.get() != State.OPEN)
{
@@ -1044,6 +1043,11 @@ public class ReplicatedEnvironmentFacade implements EnvironmentFacade, StateChan
return _environment.getGroup().getElectableNodes().size();
}
+ public boolean isMaster()
+ {
+ return ReplicatedEnvironment.State.MASTER.name().equals(getNodeState());
+ }
+
public void setReplicationGroupListener(ReplicationGroupListener replicationGroupListener)
{
if (_replicationGroupListener.compareAndSet(null, replicationGroupListener))
@@ -1308,5 +1312,4 @@ public class ReplicatedEnvironmentFacade implements EnvironmentFacade, StateChan
}
}
-
}
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
index d23ccd1510..e978ab6c0b 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java
@@ -347,6 +347,21 @@ public class BDBHAVirtualHostNodeImpl extends AbstractVirtualHostNode<BDBHAVirtu
}
}
+ @Override
+ protected void deleteVirtualHostIfExists()
+ {
+ ReplicatedEnvironmentFacade replicatedEnvironmentFacade = getReplicatedEnvironmentFacade();
+ if (replicatedEnvironmentFacade != null && replicatedEnvironmentFacade.isMaster()
+ && replicatedEnvironmentFacade.getNumberOfElectableGroupMembers() == 1)
+ {
+ super.deleteVirtualHostIfExists();
+ }
+ else
+ {
+ closeVirtualHostIfExist();
+ }
+ }
+
private Set<InetSocketAddress> getRemoteNodeAddresses()
{
Set<InetSocketAddress> helpers = new HashSet<InetSocketAddress>();
@@ -381,7 +396,7 @@ public class BDBHAVirtualHostNodeImpl extends AbstractVirtualHostNode<BDBHAVirtu
{
try
{
- destroyVirtualHostIfExist();
+ closeVirtualHostIfExist();
getConfigurationStore().getEnvironmentFacade().getEnvironment().flushLog(true);
getEventLogger().message(getConfigurationStoreLogSubject(), ConfigStoreMessages.RECOVERY_START());
@@ -434,7 +449,7 @@ public class BDBHAVirtualHostNodeImpl extends AbstractVirtualHostNode<BDBHAVirtu
{
try
{
- destroyVirtualHostIfExist();
+ closeVirtualHostIfExist();
Map<String, Object> hostAttributes = new HashMap<String, Object>();
hostAttributes.put(VirtualHost.MODEL_VERSION, BrokerModel.MODEL_VERSION);
@@ -450,10 +465,10 @@ public class BDBHAVirtualHostNodeImpl extends AbstractVirtualHostNode<BDBHAVirtu
private void onDetached()
{
- destroyVirtualHostIfExist();
+ closeVirtualHostIfExist();
}
- protected void destroyVirtualHostIfExist()
+ protected void closeVirtualHostIfExist()
{
VirtualHost<?,?,?> virtualHost = getVirtualHost();
if (virtualHost!= null)