summaryrefslogtreecommitdiff
path: root/qpid/java/bdbstore/src
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2013-04-29 14:44:11 +0000
committerAlex Rudyy <orudyy@apache.org>2013-04-29 14:44:11 +0000
commitdb2d21bb4d665ed394f1e6bec363418c808c9a4b (patch)
tree4409a0b7fcdb909bebc1c34f4c099ae993a81dc3 /qpid/java/bdbstore/src
parentb00b9f5a671149845a25955e9bae6d1eca2a49ee (diff)
downloadqpid-python-db2d21bb4d665ed394f1e6bec363418c808c9a4b.tar.gz
QPID-4639: Improve functionality to delete store on virtual host deletion
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1477110 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/AbstractBDBMessageStore.java22
-rw-r--r--qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java17
2 files changed, 39 insertions, 0 deletions
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java
index 6e64ea5597..3074daa46e 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java
@@ -73,6 +73,7 @@ import org.apache.qpid.server.store.berkeleydb.tuple.QueueEntryBinding;
import org.apache.qpid.server.store.berkeleydb.tuple.UUIDTupleBinding;
import org.apache.qpid.server.store.berkeleydb.tuple.XidBinding;
import org.apache.qpid.server.store.berkeleydb.upgrade.Upgrader;
+import org.apache.qpid.util.FileUtils;
public abstract class AbstractBDBMessageStore implements MessageStore
{
@@ -1801,4 +1802,25 @@ public abstract class AbstractBDBMessageStore implements MessageStore
+ event.getThreadName() + "'", event.getException());
}
}
+
+ @Override
+ public void onDelete()
+ {
+ if (LOGGER.isDebugEnabled())
+ {
+ LOGGER.debug("Deleting store " + _storeLocation);
+ }
+
+ if (_storeLocation != null)
+ {
+ File location = new File(_storeLocation);
+ if (location.exists())
+ {
+ if (!FileUtils.delete(location, true))
+ {
+ LOGGER.error("Cannot delete " + _storeLocation);
+ }
+ }
+ }
+ }
}
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 d18c850ecf..11b30e66ad 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
@@ -20,6 +20,7 @@
*/
package org.apache.qpid.server.store.berkeleydb;
+import java.io.File;
import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.List;
@@ -474,6 +475,22 @@ public class BDBMessageStoreTest extends org.apache.qpid.server.store.MessageSto
assertEquals("Second Message is incorrect", 23L, val.longValue());
}
+ public void testOnDelete() throws Exception
+ {
+ MessageStore log = getVirtualHost().getMessageStore();
+ AbstractBDBMessageStore bdbStore = assertBDBStore(log);
+ String storeLocation = bdbStore.getStoreLocation();
+
+ File location = new File(storeLocation);
+ assertTrue("Store does not exist at " + storeLocation, location.exists());
+
+ bdbStore.close();
+ assertTrue("Store does not exist at " + storeLocation, location.exists());
+
+ bdbStore.onDelete();
+ assertFalse("Store exists at " + storeLocation, location.exists());
+ }
+
/**
* Tests transaction rollback after a commit has occurred by utilising the
* enqueue and dequeue methods available in the TransactionLog interface