diff options
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); } |
