summaryrefslogtreecommitdiff
path: root/qpid/java/bdbstore/src
diff options
context:
space:
mode:
authorAndrew MacBean <macbean@apache.org>2014-09-15 14:16:31 +0000
committerAndrew MacBean <macbean@apache.org>2014-09-15 14:16:31 +0000
commitacc5dc6df13777cd7cd399094342d5535c46f3eb (patch)
tree3ed1524afb509513030ec0b690fb699d9deead1a /qpid/java/bdbstore/src
parentc5c6fbdd6dc6f73321b4e5be840d7533cc932e69 (diff)
downloadqpid-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')
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBConfigurationStore.java34
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java32
-rw-r--r--qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java6
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());
}