Author: orudyy Date: Thu Oct 2 11:57:59 2014 New Revision: 1628952 URL: http://svn.apache.org/r1628952 Log: QPID-6126: Invoke on-create validation after common validation, delete CO if creation fails on any stage
Modified: qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/AbstractConfiguredObjectTest.java Modified: qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java?rev=1628952&r1=1628951&r2=1628952&view=diff ============================================================================== --- qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java (original) +++ qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java Thu Oct 2 11:57:59 2014 @@ -283,10 +283,20 @@ public class BDBHAVirtualHostNodeImpl ex public void onCreate() { super.onCreate(); - + if (!isFirstNodeInAGroup()) + { + _permittedNodes = new ArrayList<>(getPermittedNodesFromHelper()); + } getEventLogger().message(getVirtualHostNodeLogSubject(), HighAvailabilityMessages.CREATED()); } + @Override + public void onOpen() + { + validatePermittedNodesFormat(_permittedNodes); + super.onOpen(); + } + protected ReplicatedEnvironmentFacade getReplicatedEnvironmentFacade() { return _environmentFacade.get(); @@ -421,13 +431,6 @@ public class BDBHAVirtualHostNodeImpl ex } @Override - public void onValidate() - { - super.onValidate(); - validatePermittedNodes(_permittedNodes); - } - - @Override protected void postResolve() { super.postResolve(); @@ -447,9 +450,7 @@ public class BDBHAVirtualHostNodeImpl ex if (!isFirstNodeInAGroup()) { - // validate that helper address points to valid node - // we need _permittedNodes for the further validation in onValidate - _permittedNodes = new ArrayList<>(getPermittedNodesFromHelper()); + getPermittedNodesFromHelper(); } } @@ -872,6 +873,11 @@ public class BDBHAVirtualHostNodeImpl ex } } + validatePermittedNodesFormat(proposedPermittedNodes); + } + + private void validatePermittedNodesFormat(Collection<String> proposedPermittedNodes) + { for (String permittedNode: proposedPermittedNodes) { String[] tokens = permittedNode.split(":"); @@ -888,7 +894,6 @@ public class BDBHAVirtualHostNodeImpl ex throw new IllegalArgumentException(String.format("Invalid port is specified in permitted node '%s'. ", permittedNode)); } } - } private class RemoteNodesDiscoverer implements ReplicationGroupListener Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java?rev=1628952&r1=1628951&r2=1628952&view=diff ============================================================================== --- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java (original) +++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java Thu Oct 2 11:57:59 2014 @@ -502,8 +502,8 @@ public abstract class AbstractConfigured try { doResolution(true, createExceptionHandler); - validateOnCreate(); doValidation(true, createExceptionHandler); + validateOnCreate(); registerWithParents(); } catch(RuntimeException e) @@ -515,22 +515,13 @@ public abstract class AbstractConfigured try { doCreation(true, unregisteringExceptionHandler); + doOpening(true, unregisteringExceptionHandler); + doAttainState(unregisteringExceptionHandler); } catch(RuntimeException e) { unregisteringExceptionHandler.handleException(e, this); } - - OpenExceptionHandler openExceptionHandler = new OpenExceptionHandler(); - try - { - doOpening(true, openExceptionHandler); - doAttainState(openExceptionHandler); - } - catch(RuntimeException e) - { - openExceptionHandler.handleException(e, this); - } } } @@ -1914,20 +1905,20 @@ public abstract class AbstractConfigured public void handleException(RuntimeException exception, AbstractConfiguredObject<?> source) { - if (source.getState() != State.DELETED) + try { - try + if (source.getState() != State.DELETED) { source.delete(); } - finally + } + finally + { + if (_unregister) { - if (_unregister) - { - source.unregister(false); - } - throw exception; + source.unregister(false); } + throw exception; } } } Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/AbstractConfiguredObjectTest.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/AbstractConfiguredObjectTest.java?rev=1628952&r1=1628951&r2=1628952&view=diff ============================================================================== --- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/AbstractConfiguredObjectTest.java (original) +++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/AbstractConfiguredObjectTest.java Thu Oct 2 11:57:59 2014 @@ -357,14 +357,18 @@ public class AbstractConfiguredObjectTes { TestConfiguredObject object = new TestConfiguredObject(getName()); object.setThrowExceptionOnOpen(true); - object.create(); - assertFalse("Unexpected opened", object.isOpened()); - assertEquals("Unexpected state", State.ERRORED, object.getState()); + try + { + object.create(); + fail("Exception should have been re-thrown"); + } + catch (RuntimeException re) + { + // pass + } - object.setThrowExceptionOnOpen(false); - object.start(); - assertTrue("Unexpected opened", object.isOpened()); - assertEquals("Unexpected state", State.ACTIVE, object.getState()); + assertFalse("Unexpected opened", object.isOpened()); + assertEquals("Unexpected state", State.DELETED, object.getState()); } public void testCreationWithExceptionThrownFromOnCreate() throws Exception --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org