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/broker-plugins | |
| 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/broker-plugins')
5 files changed, 34 insertions, 45 deletions
diff --git a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyConfigurationStore.java b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyConfigurationStore.java index 5866319985..31089356a8 100644 --- a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyConfigurationStore.java +++ b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyConfigurationStore.java @@ -21,6 +21,7 @@ package org.apache.qpid.server.store.derby; +import java.io.File; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; @@ -31,6 +32,7 @@ import org.apache.log4j.Logger; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.store.*; +import org.apache.qpid.util.FileUtils; /** * Implementation of a DurableConfigurationStore backed by Apache Derby @@ -139,7 +141,7 @@ public class DerbyConfigurationStore extends AbstractJDBCConfigurationStore } @Override - public void onDelete() + public void onDelete(ConfiguredObject<?> parent) { if (_providedMessageStore.isMessageStoreOpen()) { @@ -151,18 +153,19 @@ public class DerbyConfigurationStore extends AbstractJDBCConfigurationStore LOGGER.debug("Deleting store " + _storeLocation); } - try - { - DerbyUtils.deleteDatabaseLocation(_storeLocation); - } - catch (StoreException se) - { - LOGGER.debug("Failed to delete the store at location " + _storeLocation); - } - finally + FileBasedSettings fileBasedSettings = (FileBasedSettings)parent; + String storePath = fileBasedSettings.getStorePath(); + + if (storePath != null) { - _storeLocation = 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/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStore.java b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStore.java index d9948fe21e..9c6baa52ba 100644 --- a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStore.java +++ b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStore.java @@ -21,6 +21,7 @@ package org.apache.qpid.server.store.derby; +import java.io.File; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; @@ -30,6 +31,7 @@ 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.StoreException; +import org.apache.qpid.util.FileUtils; /** * Implementation of a MessageStore backed by Apache Derby. @@ -71,11 +73,11 @@ public class DerbyMessageStore extends AbstractDerbyMessageStore } @Override - public void onDelete() + public void onDelete(ConfiguredObject parent) { if (isMessageStoreOpen()) { - throw new IllegalStateException("Cannot delete the store as the message store is still open"); + throw new IllegalStateException("Cannot delete the store as the provided message store is still open"); } if (LOGGER.isDebugEnabled()) @@ -83,18 +85,19 @@ public class DerbyMessageStore extends AbstractDerbyMessageStore LOGGER.debug("Deleting store " + _storeLocation); } - try - { - DerbyUtils.deleteDatabaseLocation(_storeLocation); - } - catch (StoreException se) - { - LOGGER.debug("Failed to delete the store at location " + _storeLocation); - } - finally + FileBasedSettings fileBasedSettings = (FileBasedSettings)parent; + String storePath = fileBasedSettings.getStorePath(); + + if (storePath != null) { - _storeLocation = 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/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyUtils.java b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyUtils.java index b0f4a137f2..9bdce9af1c 100644 --- a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyUtils.java +++ b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyUtils.java @@ -101,26 +101,6 @@ public class DerbyUtils } } - public static void deleteDatabaseLocation(String storeLocation) - { - if (MEMORY_STORE_LOCATION.equals(storeLocation)) - { - return; - } - - if (storeLocation != null) - { - File location = new File(storeLocation); - if (location.exists()) - { - if (!FileUtils.delete(location, true)) - { - throw new StoreException("Failed to delete the store at location : " + storeLocation); - } - } - } - } - public static String getBlobAsString(ResultSet rs, int col) throws SQLException { Blob blob = rs.getBlob(col); diff --git a/qpid/java/broker-plugins/derby-store/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreTest.java b/qpid/java/broker-plugins/derby-store/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreTest.java index ad3246290c..0b1847bb59 100644 --- a/qpid/java/broker-plugins/derby-store/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreTest.java +++ b/qpid/java/broker-plugins/derby-store/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreTest.java @@ -57,7 +57,10 @@ public class DerbyMessageStoreTest extends MessageStoreTestCase getStore().closeMessageStore(); assertTrue("Store does not exist at " + _storeLocation, location.exists()); - getStore().onDelete(); + DerbyVirtualHost mockVH = mock(DerbyVirtualHost.class); + when(mockVH.getStorePath()).thenReturn(_storeLocation); + + getStore().onDelete(mockVH); assertFalse("Store exists at " + _storeLocation, location.exists()); } diff --git a/qpid/java/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java b/qpid/java/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java index 207c5a8325..3a85ae3257 100644 --- a/qpid/java/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java +++ b/qpid/java/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java @@ -59,7 +59,7 @@ public class JDBCMessageStoreTest extends MessageStoreTestCase assertTablesExist(expectedTables, true); getStore().closeMessageStore(); assertTablesExist(expectedTables, true); - getStore().onDelete(); + getStore().onDelete(mock(JDBCVirtualHost.class)); assertTablesExist(expectedTables, false); } |
