[rhmessaging-commits] rhmessaging commits: r3259 - in store/trunk/java/bdbstore/src: test/java/org/apache/qpid/server/store/berkeleydb and 1 other directory.

rhmessaging-commits at lists.jboss.org rhmessaging-commits at lists.jboss.org
Fri Apr 3 12:37:38 EDT 2009


Author: aidanskinner
Date: 2009-04-03 12:37:37 -0400 (Fri, 03 Apr 2009)
New Revision: 3259

Modified:
   store/trunk/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java
   store/trunk/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBStoreTest.java
Log:
QPID-1730: Queues lose their configuration on recovery since it's not peristed to disk.

BDBMessageStore.recovery: reconfigure queues with their virtual host on recovery.
BDBStoreTest.testRecovery: check that queues get the correct MaximumMessageAge set.

Modified: store/trunk/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java
===================================================================
--- store/trunk/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java	2009-04-03 14:06:39 UTC (rev 3258)
+++ store/trunk/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java	2009-04-03 16:37:37 UTC (rev 3259)
@@ -41,6 +41,7 @@
 import org.apache.qpid.framing.AMQShortString;
 import org.apache.qpid.framing.FieldTable;
 import org.apache.qpid.framing.abstraction.ContentChunk;
+import org.apache.qpid.server.configuration.QueueConfiguration;
 import org.apache.qpid.server.configuration.VirtualHostConfiguration;
 import org.apache.qpid.server.exchange.Exchange;
 import org.apache.qpid.server.queue.AMQQueue;
@@ -68,6 +69,7 @@
 import java.util.Map;
 import java.util.Queue;
 import java.util.TreeMap;
+import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -244,7 +246,7 @@
             if (!newEnvironment && virtualHost != null)
             {
                 // this recovers durable queues and persistent messages
-                recover();
+                recover(virtualHost);
             }
         }
 
@@ -1248,7 +1250,7 @@
         }
     }
 
-    public void recover() throws AMQException
+    public void recover(VirtualHost virtualHost) throws AMQException
     {
         stateTransition(State.CONFIGURED, State.RECOVERING);
 
@@ -1259,6 +1261,11 @@
             beginTran(context);
             Map<AMQShortString, AMQQueue> queues = loadQueues();
 
+            for (AMQQueue q : queues.values())
+            {
+                q.configure(virtualHost.getConfiguration().getQueueConfiguration(q.getName().asString()));
+            }
+
             recoverExchanges();
 
             deliverMessages(context, queues);

Modified: store/trunk/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBStoreTest.java
===================================================================
--- store/trunk/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBStoreTest.java	2009-04-03 14:06:39 UTC (rev 3258)
+++ store/trunk/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBStoreTest.java	2009-04-03 16:37:37 UTC (rev 3259)
@@ -38,6 +38,7 @@
 import org.apache.qpid.server.routing.RoutingTable;
 import org.apache.qpid.server.transactionlog.TestableTransactionLog;
 import org.apache.qpid.server.transactionlog.TransactionLog;
+import org.apache.qpid.server.configuration.ServerConfiguration;
 import org.apache.qpid.server.configuration.VirtualHostConfiguration;
 import org.apache.qpid.server.exchange.DefaultExchangeFactory;
 import org.apache.qpid.server.exchange.DirectExchange;
@@ -101,8 +102,15 @@
 
         _routingTable = _bdbMessageStore;
 
-        VirtualHostConfiguration vhostConfig = new VirtualHostConfiguration("test", new PropertiesConfiguration());
-
+        PropertiesConfiguration config = new PropertiesConfiguration();
+        
+        // This is used to test that recovery will correctly reapply configuration to the queues
+        // in testRecovery
+        config.setProperty("queues.maximumMessageAge", "23");
+        
+        VirtualHostConfiguration vhostConfig = new VirtualHostConfiguration("test", config, new ServerConfiguration(config));
+        
+        
         _transactionLog = new TestableTransactionLog(_bdbMessageStore.configure(BDB_DIR));
 
         _virtualHost = new VirtualHost(vhostConfig, _transactionLog);
@@ -122,7 +130,7 @@
 
         env.addProperty("store.class", "org.apache.qpid.server.transactionlog.TestableTransactionLog");
         env.addProperty("store.delegate", "org.apache.qpid.server.store.berkeleydb.BDBMessageStore");
-
+        env.setProperty("queues.maximumMessageAge", 23);
         _virtualHost = new VirtualHost(new VirtualHostConfiguration("test", env));
         _transactionLog = _virtualHost.getTransactionLog();
     }
@@ -474,6 +482,9 @@
             Assert.assertEquals("Queue1 has incorrect message count", 3, q1.getMessageCount());
             Assert.assertNotNull("Queue2 is was not recovered", q2);
             Assert.assertEquals("Queue2 has incorrect message count", 1, q2.getMessageCount());
+            
+            // Message age is set in setUp
+            assertEquals("q1 has an incorrect maximum message age", 23, q1.getMaximumMessageAge());
         }
         catch (Exception e)
         {




More information about the rhmessaging-commits mailing list