diff options
| author | Alex Rudyy <orudyy@apache.org> | 2014-05-24 19:39:56 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2014-05-24 19:39:56 +0000 |
| commit | 54f3d64a0be7bac227ac1721ee4536152405b2c9 (patch) | |
| tree | df2b2d8ed7a4bf1e54b432bfc8bf29ac110e3ee8 /qpid/java/bdbstore/src/main | |
| parent | 54a17de77d2723d30098ec0790a320077d85270d (diff) | |
| download | qpid-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')
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) |
