diff options
| author | Alan Conway <aconway@apache.org> | 2013-02-07 19:26:20 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2013-02-07 19:26:20 +0000 |
| commit | 88da48a26100c4ff24e791aeb6a7caf41528be54 (patch) | |
| tree | e50498a750c2d816c259e2899728b8217ad3d6e0 /qpid/cpp/src | |
| parent | 88613594a4bfa64c5f244ce2d183d605449e2496 (diff) | |
| download | qpid-python-88da48a26100c4ff24e791aeb6a7caf41528be54.tar.gz | |
QPID-4555: HA Add QueueSettings::declaredExclusive for exclusive queues.
This is set when the queue is created, before calling
ConfigurationObserver::queueCreate, and does not change thereafter.
The existing Queue::owner not set until after ConfigurationObserver::queueCreate
and does change as ownership can be released and acquired.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1443679 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
| -rw-r--r-- | qpid/cpp/src/qpid/broker/QueueSettings.cpp | 1 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/broker/QueueSettings.h | 1 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/broker/SessionAdapter.cpp | 1 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/ha/BrokerReplicator.cpp | 6 | ||||
| -rw-r--r-- | qpid/cpp/src/qpid/ha/ReplicationTest.cpp | 2 |
5 files changed, 8 insertions, 3 deletions
diff --git a/qpid/cpp/src/qpid/broker/QueueSettings.cpp b/qpid/cpp/src/qpid/broker/QueueSettings.cpp index f56b4dfda4..445e91c854 100644 --- a/qpid/cpp/src/qpid/broker/QueueSettings.cpp +++ b/qpid/cpp/src/qpid/broker/QueueSettings.cpp @@ -77,6 +77,7 @@ const QueueSettings::Aliases QueueSettings::aliases; QueueSettings::QueueSettings(bool d, bool a) : durable(d), autodelete(a), + declaredExclusive(false), priorities(0), defaultFairshare(0), shareGroups(false), diff --git a/qpid/cpp/src/qpid/broker/QueueSettings.h b/qpid/cpp/src/qpid/broker/QueueSettings.h index f955530313..c43776c722 100644 --- a/qpid/cpp/src/qpid/broker/QueueSettings.h +++ b/qpid/cpp/src/qpid/broker/QueueSettings.h @@ -43,6 +43,7 @@ struct QueueSettings bool durable; bool autodelete; + bool declaredExclusive; //basic queue types: std::string lvqKey; diff --git a/qpid/cpp/src/qpid/broker/SessionAdapter.cpp b/qpid/cpp/src/qpid/broker/SessionAdapter.cpp index fd3cf9400f..e391432bff 100644 --- a/qpid/cpp/src/qpid/broker/SessionAdapter.cpp +++ b/qpid/cpp/src/qpid/broker/SessionAdapter.cpp @@ -294,6 +294,7 @@ void SessionAdapter::QueueHandlerImpl::declare(const string& name, const string& } catch (const qpid::types::Exception& e) { throw InvalidArgumentException(e.what()); } + settings.declaredExclusive = exclusive; std::pair<Queue::shared_ptr, bool> queue_created = getBroker().createQueue(name, settings, diff --git a/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp b/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp index 410ebc3114..7c0fad9b60 100644 --- a/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp +++ b/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp @@ -600,9 +600,11 @@ void BrokerReplicator::doEventMembersUpdate(Variant::Map& values) { void BrokerReplicator::doEventSubscribe(Variant::Map& values) { // Ignore queue replicator subscriptions. if (QueueReplicator::isReplicatorName(values[DEST].asString())) return; - QPID_LOG(debug, logPrefix << "Subscribe event: " << values[QNAME]); boost::shared_ptr<QueueReplicator> qr = findQueueReplicator(values[QNAME]); - if (qr) qr->setSubscribed(); + if (qr) { + qr->setSubscribed(); + QPID_LOG(debug, logPrefix << "Subscribe event: " << values[QNAME]); + } } namespace { diff --git a/qpid/cpp/src/qpid/ha/ReplicationTest.cpp b/qpid/cpp/src/qpid/ha/ReplicationTest.cpp index 18e0681f0f..0156c631bb 100644 --- a/qpid/cpp/src/qpid/ha/ReplicationTest.cpp +++ b/qpid/cpp/src/qpid/ha/ReplicationTest.cpp @@ -65,7 +65,7 @@ ReplicateLevel ReplicationTest::getLevel(const broker::Exchange& ex) { ReplicateLevel ReplicationTest::useLevel(const broker::Queue& q) { - bool ignore = q.isAutoDelete() && q.hasExclusiveOwner() && + bool ignore = q.isAutoDelete() && q.getSettings().declaredExclusive && !q.getSettings().autoDeleteDelay; return ignore ? ReplicationTest(NONE).getLevel(q) : getLevel(q); } |
