[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