[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