diff options
| author | Martin Ritchie <ritchiem@apache.org> | 2009-04-16 12:23:35 +0000 |
|---|---|---|
| committer | Martin Ritchie <ritchiem@apache.org> | 2009-04-16 12:23:35 +0000 |
| commit | 7d67ca405dbcca6f2d8a0393f5f035e48c10a22d (patch) | |
| tree | 8f8b733815e69f85e70a68eb73a631d17b022bb1 | |
| parent | 919ecacd18445a8d55d735772185e1e03c8acd60 (diff) | |
| download | qpid-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.java | 22 |
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); } |
