summaryrefslogtreecommitdiff
path: root/java
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
commit978d7d947295561a53f89b19971fe3344552e01e (patch)
treeda670f15d72073d2a45bff088216d8c9f07893e4 /java
parentbe2c19851068e7393cbc57400278dc3e3ec56f7b (diff)
downloadqpid-python-978d7d947295561a53f89b19971fe3344552e01e.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/qpid@765597 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/store/DerbyMessageStore.java22
1 files changed, 17 insertions, 5 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/store/DerbyMessageStore.java b/java/broker/src/main/java/org/apache/qpid/server/store/DerbyMessageStore.java
index 47d9311453..5c0672d783 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/store/DerbyMessageStore.java
+++ b/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);
}