diff options
| author | Andrew MacBean <macbean@apache.org> | 2014-09-15 14:16:31 +0000 |
|---|---|---|
| committer | Andrew MacBean <macbean@apache.org> | 2014-09-15 14:16:31 +0000 |
| commit | acc5dc6df13777cd7cd399094342d5535c46f3eb (patch) | |
| tree | 3ed1524afb509513030ec0b690fb699d9deead1a /qpid/java/bdbstore/src | |
| parent | c5c6fbdd6dc6f73321b4e5be840d7533cc932e69 (diff) | |
| download | qpid-python-acc5dc6df13777cd7cd399094342d5535c46f3eb.tar.gz | |
QPID-6075: [Java Broker] Deleting VHN fails to delete underlying store files if VHN has not been started
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1625039 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/bdbstore/src')
3 files changed, 38 insertions, 34 deletions
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java index bbcf6db2fe..2caa069891 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java @@ -44,6 +44,7 @@ import org.apache.log4j.Logger; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.store.ConfiguredObjectRecord; import org.apache.qpid.server.store.DurableConfigurationStore; +import org.apache.qpid.server.store.FileBasedSettings; import org.apache.qpid.server.store.MessageStore; import org.apache.qpid.server.store.MessageStoreProvider; import org.apache.qpid.server.store.SizeMonitoringSettings; @@ -479,27 +480,26 @@ public class BDBConfigurationStore implements MessageStoreProvider, DurableConfi } @Override - public void onDelete() + public void onDelete(ConfiguredObject<?> parent) { - if (!isConfigurationStoreOpen() && !_providedMessageStore.isMessageStoreOpen()) + if (LOGGER.isDebugEnabled()) { - if (_storeLocation != null) - { - if (LOGGER.isDebugEnabled()) - { - LOGGER.debug("Deleting store " + _storeLocation); - } + LOGGER.debug("Deleting store " + _storeLocation); + } - File location = new File(_storeLocation); - if (location.exists()) - { - if (!FileUtils.delete(location, true)) - { - LOGGER.error("Cannot delete " + _storeLocation); - } - } + FileBasedSettings fileBasedSettings = (FileBasedSettings)parent; + String storePath = fileBasedSettings.getStorePath(); + + if (storePath != null) + { + File configFile = new File(storePath); + if (!FileUtils.delete(configFile, true)) + { + LOGGER.info("Failed to delete the store at location " + storePath); } } + + _storeLocation = null; } private boolean isConfigurationStoreOpen() @@ -562,7 +562,7 @@ public class BDBConfigurationStore implements MessageStoreProvider, DurableConfi } @Override - public void onDelete() + public void onDelete(ConfiguredObject<?> parent) { // Nothing to do, message store will be deleted when configuration store is deleted } diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java index 9a3734b5ca..5facf616e5 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java @@ -27,6 +27,7 @@ import com.sleepycat.je.DatabaseException; import org.apache.log4j.Logger; import org.apache.qpid.server.model.ConfiguredObject; +import org.apache.qpid.server.store.FileBasedSettings; import org.apache.qpid.server.store.SizeMonitoringSettings; import org.apache.qpid.server.store.StoreException; import org.apache.qpid.util.FileUtils; @@ -102,27 +103,26 @@ public class BDBMessageStore extends AbstractBDBMessageStore } @Override - public void onDelete() + public void onDelete(ConfiguredObject<?> parent) { - if (!_messageStoreOpen.get()) + if (LOGGER.isDebugEnabled()) { - if (_storeLocation != null) - { - if (LOGGER.isDebugEnabled()) - { - LOGGER.debug("Deleting store " + _storeLocation); - } + LOGGER.debug("Deleting store " + _storeLocation); + } - File location = new File(_storeLocation); - if (location.exists()) - { - if (!FileUtils.delete(location, true)) - { - LOGGER.error("Cannot delete " + _storeLocation); - } - } + FileBasedSettings fileBasedSettings = (FileBasedSettings)parent; + String storePath = fileBasedSettings.getStorePath(); + + if (storePath != null) + { + File configFile = new File(storePath); + if (!FileUtils.delete(configFile, true)) + { + LOGGER.info("Failed to delete the store at location " + storePath); } } + + _storeLocation = null; } @Override diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java index bace585e56..3ddfd0bbdf 100644 --- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java +++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java @@ -402,7 +402,11 @@ public class BDBMessageStoreTest extends MessageStoreTestCase getStore().closeMessageStore(); assertTrue("Store does not exist at " + storeLocation, location.exists()); - getStore().onDelete(); + BDBVirtualHost mockVH = mock(BDBVirtualHost.class); + when(mockVH.getStorePath()).thenReturn(getStore().getStoreLocation()); + + getStore().onDelete(mockVH); + assertFalse("Store exists at " + storeLocation, location.exists()); } |
