diff options
| author | Alex Rudyy <orudyy@apache.org> | 2013-04-29 14:44:11 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2013-04-29 14:44:11 +0000 |
| commit | db2d21bb4d665ed394f1e6bec363418c808c9a4b (patch) | |
| tree | 4409a0b7fcdb909bebc1c34f4c099ae993a81dc3 /qpid/java/bdbstore/src | |
| parent | b00b9f5a671149845a25955e9bae6d1eca2a49ee (diff) | |
| download | qpid-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')
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 |
