diff options
| author | Alex Rudyy <orudyy@apache.org> | 2013-12-27 17:03:48 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2013-12-27 17:03:48 +0000 |
| commit | 4e99d2f6a47801531ddd443fc120fee79e0568b2 (patch) | |
| tree | 68b19d781ac726ff95319a31fecdeab5b9b4f045 /qpid/java | |
| parent | 24382d0a05b7203e62a3d6f09364518e06a23a56 (diff) | |
| download | qpid-python-4e99d2f6a47801531ddd443fc120fee79e0568b2.tar.gz | |
QPID-5412: Stop saving virtual host state in conviguration store
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/java-broker-bdb-ha@1553696 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
4 files changed, 31 insertions, 9 deletions
diff --git a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/VirtualHostRestTest.java b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/VirtualHostRestTest.java index 3d92573dea..7b0877eea7 100644 --- a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/VirtualHostRestTest.java +++ b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/VirtualHostRestTest.java @@ -21,6 +21,7 @@ package org.apache.qpid.server.store.berkeleydb; import java.io.File; +import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -70,6 +71,8 @@ public class VirtualHostRestTest extends QpidRestTestCase responseCode = getRestTestHelper().submitRequest("/rest/virtualhost/" + hostName, "PUT", hostData); assertEquals("Unexpected response code for virtual host update status", 200, responseCode); + waitForVirtualHostActivation(hostName, 10000l); + Map<String, Object> replicationNodeDetails = getRestTestHelper().getJsonAsSingletonList("/rest/replicationnode/" + hostName + "/" + nodeName); assertLocalNode(nodeData, replicationNodeDetails); try @@ -77,7 +80,7 @@ public class VirtualHostRestTest extends QpidRestTestCase // make sure that the host is saved in the broker store restartBroker(); - Map<String, Object> hostDetails = getRestTestHelper().getJsonAsSingletonList("/rest/virtualhost/" + hostName); + Map<String, Object> hostDetails = waitForVirtualHostActivation(hostName, 10000l); Asserts.assertVirtualHost(hostName, hostDetails); assertEquals("Unexpected virtual host type", BDBHAVirtualHostFactory.TYPE.toString(), hostDetails.get(VirtualHost.TYPE)); @@ -109,4 +112,18 @@ public class VirtualHostRestTest extends QpidRestTestCase } } + private Map<String, Object> waitForVirtualHostActivation(String hostName, long timeout) throws IOException + { + Map<String, Object> hostDetails = null; + long startTime = System.currentTimeMillis(); + boolean isActive = false; + do + { + hostDetails = getRestTestHelper().getJsonAsSingletonList("/rest/virtualhost/" + hostName); + isActive = hostDetails.get(VirtualHost.STATE).equals(State.ACTIVE.name()); + } + while(!isActive && System.currentTimeMillis() - startTime < timeout ); + assertTrue("Unexpected virtual host state:" + hostDetails.get(VirtualHost.STATE), isActive); + return hostDetails; + } } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java index d4397081d3..40560be379 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java @@ -290,6 +290,11 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat private VirtualHost createVirtualHost(final Map<String, Object> attributes) throws AccessControlException, IllegalArgumentException { + State desiredState = MapValueConverter.getEnumAttribute(State.class, VirtualHost.STATE, attributes, State.ACTIVE); + + //TODO: do no save state attribute if it is present + attributes.remove(VirtualHost.STATE); + final VirtualHostAdapter virtualHostAdapter = new VirtualHostAdapter(UUID.randomUUID(), attributes, this, _statisticsGatherer, getTaskExecutor()); addVirtualHost(virtualHostAdapter); @@ -297,7 +302,6 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat // permission has already been granted to create the virtual host // disable further access check on other operations, e.g. create exchange SecurityManager.setAccessChecksDisabled(true); - State desiredState = MapValueConverter.getEnumAttribute(State.class, VirtualHost.STATE, attributes, State.ACTIVE); try { virtualHostAdapter.setDesiredState(State.INITIALISING, desiredState); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java index 7968b6d00d..f83d5b81db 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java @@ -1136,7 +1136,6 @@ public final class VirtualHostAdapter extends AbstractAdapter implements Virtual } else if (desiredState == State.QUIESCED) { - setAttribute(VirtualHost.STATE, getActualState(), State.QUIESCED); return true; } return false; @@ -1266,16 +1265,18 @@ public final class VirtualHostAdapter extends AbstractAdapter implements Virtual // TODO: a hack to change a virtual host state only if (attributes.size() == 2 && attributes.containsKey(STATE) && getName().equals(attributes.get(NAME))) { - State newState = MapValueConverter.getEnumAttribute(State.class, STATE, attributes); + State desiredState = MapValueConverter.getEnumAttribute(State.class, STATE, attributes); State actualState = getActualState(); + if (LOGGER.isDebugEnabled()) { - LOGGER.debug(String.format("Change virtual host %s state from %s to %s", getName(), actualState.toString(), - newState.toString())); + LOGGER.debug(String.format("Change state of virtual host '%s' from '%s' to '%s'", getName(), + actualState.toString(), desiredState.toString())); } - if (actualState != newState && setState(actualState, newState)) + + if (actualState != desiredState) { - super.changeAttributes(Collections.<String, Object>singletonMap(STATE, newState)); + setDesiredState(actualState, desiredState); } } else diff --git a/qpid/java/systests/etc/config-systests.json b/qpid/java/systests/etc/config-systests.json index 12a8a5c5a6..55b73a4263 100644 --- a/qpid/java/systests/etc/config-systests.json +++ b/qpid/java/systests/etc/config-systests.json @@ -22,7 +22,7 @@ "name": "Broker", "defaultVirtualHost" : "test", "storeVersion": 1, - "modelVersion": "1.0", + "modelVersion": "1.3", "authenticationproviders" : [ { "name" : "plain", "type" : "PlainPasswordFile", |
