diff options
Diffstat (limited to 'qpid/java/bdbstore/src')
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 |
