summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Ritchie <ritchiem@apache.org>2009-04-16 12:23:35 +0000
committerMartin Ritchie <ritchiem@apache.org>2009-04-16 12:23:35 +0000
commit7d67ca405dbcca6f2d8a0393f5f035e48c10a22d (patch)
tree8f8b733815e69f85e70a68eb73a631d17b022bb1
parent919ecacd18445a8d55d735772185e1e03c8acd60 (diff)
downloadqpid-python-7d67ca405dbcca6f2d8a0393f5f035e48c10a22d.tar.gz
QPID-1815 : Ensure Derby store looks up existing queues/exchanges in the virtualhost on recovery
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@765597 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/store/DerbyMessageStore.java22
1 files changed, 17 insertions, 5 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/store/DerbyMessageStore.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/store/DerbyMessageStore.java
index 47d9311453..5c0672d783 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/store/DerbyMessageStore.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/store/DerbyMessageStore.java
@@ -356,9 +356,16 @@ public class DerbyMessageStore implements MessageStore
String queueName = rs.getString(1);
String owner = rs.getString(2);
AMQShortString queueNameShortString = new AMQShortString(queueName);
- AMQQueue q = AMQQueueFactory.createAMQQueueImpl(queueNameShortString, true, owner == null ? null : new AMQShortString(owner), false, _virtualHost,
- null);
- _virtualHost.getQueueRegistry().registerQueue(q);
+
+ AMQQueue q = _virtualHost.getQueueRegistry().getQueue(queueNameShortString);
+
+ if (q == null)
+ {
+ q = AMQQueueFactory.createAMQQueueImpl(queueNameShortString, true, owner == null ? null : new AMQShortString(owner), false, _virtualHost,
+ null);
+ _virtualHost.getQueueRegistry().registerQueue(q);
+ }
+
queueMap.put(queueNameShortString,q);
}
@@ -394,8 +401,13 @@ public class DerbyMessageStore implements MessageStore
String type = rs.getString(2);
boolean autoDelete = rs.getShort(3) != 0;
- exchange = _virtualHost.getExchangeFactory().createExchange(new AMQShortString(exchangeName), new AMQShortString(type), true, autoDelete, 0);
- _virtualHost.getExchangeRegistry().registerExchange(exchange);
+ AMQShortString exchangeNameSS = new AMQShortString(exchangeName);
+ exchange = _virtualHost.getExchangeRegistry().getExchange(exchangeNameSS);
+ if (exchange == null)
+ {
+ exchange = _virtualHost.getExchangeFactory().createExchange(exchangeNameSS, new AMQShortString(type), true, autoDelete, 0);
+ _virtualHost.getExchangeRegistry().registerExchange(exchange);
+ }
exchanges.add(exchange);
}