[rhmessaging-commits] rhmessaging commits: r2417 - in store/branches/java/broker-queue-refactor/java/bdbstore/src: test/java/org/apache/qpid/server/store/berkeleydb and 1 other directories.
rhmessaging-commits at lists.jboss.org
rhmessaging-commits at lists.jboss.org
Fri Sep 5 11:00:30 EDT 2008
Author: ritchiem
Date: 2008-09-05 11:00:30 -0400 (Fri, 05 Sep 2008)
New Revision: 2417
Modified:
store/branches/java/broker-queue-refactor/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java
store/branches/java/broker-queue-refactor/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBUpgradeTest.java
store/branches/java/broker-queue-refactor/java/bdbstore/src/tools/java/org/apache/qpid/server/store/berkeleydb/BDBStoreUpgrade.java
Log:
RHM-6 : Ensure that upgrading an already upgraded store correctly fails.
Modified: store/branches/java/broker-queue-refactor/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java
===================================================================
--- store/branches/java/broker-queue-refactor/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java 2008-09-05 14:03:23 UTC (rev 2416)
+++ store/branches/java/broker-queue-refactor/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java 2008-09-05 15:00:30 UTC (rev 2417)
@@ -256,6 +256,7 @@
{
if (_version != 1)
{
+ closeEnvironment();
throw new DatabaseException("Error: Attempting to start BDBStore version " + _version
+ " with a version 1 store. Please Upgrade");
}
@@ -270,7 +271,9 @@
if (version != _version)
{
- throw new DatabaseException("Error: Attempting to start BDBStore version " + _version + " with a version " + version + " store. Please Upgrade");
+ closeEnvironment();
+ throw new DatabaseException("Error: Unable to load BDBStore as version " + _version
+ + ". Store on disk contains version " + version + " data.");
}
}
}
@@ -337,6 +340,11 @@
*/
public void close() throws Exception
{
+ if (_state != State.STARTED)
+ {
+ return;
+ }
+
_state = State.CLOSING;
_commitThread.close();
@@ -378,6 +386,13 @@
_deliveryDb.close();
}
+ closeEnvironment();
+
+ _state = State.CLOSED;
+ }
+
+ private void closeEnvironment() throws DatabaseException
+ {
if (_environment != null)
{
// Clean the log before closing. This makes sure it doesn't contain
@@ -386,8 +401,6 @@
_environment.cleanLog();
_environment.close();
}
-
- _state = State.CLOSED;
}
/**
Modified: store/branches/java/broker-queue-refactor/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBUpgradeTest.java
===================================================================
--- store/branches/java/broker-queue-refactor/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBUpgradeTest.java 2008-09-05 14:03:23 UTC (rev 2416)
+++ store/branches/java/broker-queue-refactor/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBUpgradeTest.java 2008-09-05 15:00:30 UTC (rev 2417)
@@ -108,7 +108,7 @@
catch (Exception e)
{
assertTrue("Incorrect Exception Thrown:" + e.getMessage(),
- e.getMessage().contains("Attempting to start BDBStore version 1 with a version 2 store"));
+ e.getMessage().contains("Unable to load BDBStore as version 1. Store on disk contains version 2 data"));
}
}
Modified: store/branches/java/broker-queue-refactor/java/bdbstore/src/tools/java/org/apache/qpid/server/store/berkeleydb/BDBStoreUpgrade.java
===================================================================
--- store/branches/java/broker-queue-refactor/java/bdbstore/src/tools/java/org/apache/qpid/server/store/berkeleydb/BDBStoreUpgrade.java 2008-09-05 14:03:23 UTC (rev 2416)
+++ store/branches/java/broker-queue-refactor/java/bdbstore/src/tools/java/org/apache/qpid/server/store/berkeleydb/BDBStoreUpgrade.java 2008-09-05 15:00:30 UTC (rev 2417)
@@ -131,25 +131,35 @@
_newMessageStore = new BDBMessageStore();
_newMessageStore.configure(_newVirtualHost, toDir);
- //Load the old MessageStore
- switch (version)
+ AMQException openException=null;
+ try{
+ //Load the old MessageStore
+ switch (version)
+ {
+ default:
+ case 1:
+ _oldMessageStore = new BDBMessageStore(1);
+ _oldMessageStore.configure(_oldVirtualHost, fromDir);
+ upgradeFromVersion_1();
+ break;
+ }
+ }
+ catch(AMQException amq)
{
- default:
- case 1:
- _oldMessageStore = new BDBMessageStore(1);
- _oldMessageStore.configure(_oldVirtualHost, fromDir);
- upgradeFromVersion_1();
- break;
+
}
+ finally
+ {
+ _newVirtualHost.close();
+ _oldVirtualHost.close();
- _oldMessageStore.close();
- _newMessageStore.close();
+ _newMessageStore.close();
+ _oldMessageStore.close();
- _newVirtualHost.close();
- _oldVirtualHost.close();
- //Shutdown the AR that the Vhosts will have created.
- ApplicationRegistry.remove(1);
+ //Shutdown the AR that the Vhosts will have created.
+ ApplicationRegistry.remove(1);
+ }
}
private void upgradeFromVersion_1() throws AMQException, DatabaseException
More information about the rhmessaging-commits
mailing list