diff options
| author | Robert Gemmell <robbie@apache.org> | 2013-05-04 20:45:02 +0000 |
|---|---|---|
| committer | Robert Gemmell <robbie@apache.org> | 2013-05-04 20:45:02 +0000 |
| commit | 8a979bda26c4d7a5372bcb1c6e83b11c43e7630b (patch) | |
| tree | 55c8a188e19214f5e9998ae2495e01a4e910a665 /qpid/java | |
| parent | 3c6a3ea2c99c4628aa1db79e35d4b302a5652c1a (diff) | |
| download | qpid-python-8a979bda26c4d7a5372bcb1c6e83b11c43e7630b.tar.gz | |
QPID-4390: ensure the _messageStore field is populated prior configuring the store to ensure it is set before use by the listener during the asynchronous HA store activation
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1479172 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
| -rw-r--r-- | qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java | 45 |
1 files changed, 21 insertions, 24 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java index 02852d1a70..b39f975c28 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java @@ -146,7 +146,9 @@ public class VirtualHostImpl implements VirtualHost, IConnectionRegistry.Registr _bindingFactory = new BindingFactory(this); - _messageStore = configureMessageStore(hostConfig); + _messageStore = initialiseMessageStore(hostConfig); + + configureMessageStore(hostConfig); activateNonHAMessageStore(); @@ -260,29 +262,21 @@ public class VirtualHostImpl implements VirtualHost, IConnectionRegistry.Registr return _houseKeepingTasks.getActiveCount(); } - - private MessageStore initialiseMessageStore(final String messageStoreClass) throws Exception - { - final Class<?> clazz = Class.forName(messageStoreClass); - final Object o = clazz.newInstance(); - - if (!(o instanceof MessageStore)) - { - throw new ClassCastException("Message store class must implement " + MessageStore.class + - ". Class " + clazz + " does not."); - } - - final MessageStore messageStore = (MessageStore) o; - return messageStore; - } - - private MessageStore configureMessageStore(VirtualHostConfiguration hostConfig) throws Exception + private MessageStore initialiseMessageStore(VirtualHostConfiguration hostConfig) throws Exception { String storeType = hostConfig.getConfig().getString("store.type"); MessageStore messageStore = null; if (storeType == null) { - messageStore = initialiseMessageStore(hostConfig.getMessageStoreClass()); + final Class<?> clazz = Class.forName(hostConfig.getMessageStoreClass()); + final Object o = clazz.newInstance(); + + if (!(o instanceof MessageStore)) + { + throw new ClassCastException(clazz + " does not implement " + MessageStore.class); + } + + messageStore = (MessageStore) o; } else { @@ -301,11 +295,6 @@ public class VirtualHostImpl implements VirtualHost, IConnectionRegistry.Registr messageStore.addEventListener(new AfterInitialisationListener(), Event.AFTER_INIT); } - VirtualHostConfigRecoveryHandler recoveryHandler = new VirtualHostConfigRecoveryHandler(this); - - messageStore.configureConfigStore(getName(), recoveryHandler, hostConfig.getStoreConfiguration()); - messageStore.configureMessageStore(getName(), recoveryHandler, recoveryHandler, hostConfig.getStoreConfiguration()); - return messageStore; } @@ -317,6 +306,14 @@ public class VirtualHostImpl implements VirtualHost, IConnectionRegistry.Registr } } + private void configureMessageStore(VirtualHostConfiguration hostConfig) throws Exception + { + VirtualHostConfigRecoveryHandler recoveryHandler = new VirtualHostConfigRecoveryHandler(this); + + _messageStore.configureConfigStore(getName(), recoveryHandler, hostConfig.getStoreConfiguration()); + _messageStore.configureMessageStore(getName(), recoveryHandler, recoveryHandler, hostConfig.getStoreConfiguration()); + } + private void initialiseModel(VirtualHostConfiguration config) throws ConfigurationException, AMQException { _logger.debug("Loading configuration for virtualhost: " + config.getName()); |
