summaryrefslogtreecommitdiff
path: root/qpid/java/broker-plugins
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/broker-plugins
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/broker-plugins')
-rw-r--r--qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyConfigurationStore.java25
-rw-r--r--qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStore.java27
-rw-r--r--qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyUtils.java20
-rw-r--r--qpid/java/broker-plugins/derby-store/src/test/java/org/apache/qpid/server/store/derby/DerbyMessageStoreTest.java5
-rw-r--r--qpid/java/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java2
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);
}