Author: aconway
Date: Tue Jul 31 20:57:30 2012
New Revision: 1367776

URL: http://svn.apache.org/viewvc?rev=1367776&view=rev
Log:
QPID-4179: Cluster does not replicate exclusive status of queues.

Modified:
    qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
    qpid/trunk/qpid/cpp/src/qpid/cluster/UpdateClient.cpp
    qpid/trunk/qpid/specs/management-schema.xml

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp?rev=1367776&r1=1367775&r2=1367776&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp Tue Jul 31 20:57:30 2012
@@ -178,7 +178,8 @@ Queue::Queue(const string& _name, bool _
         ManagementAgent* agent = broker->getManagementAgent();
 
         if (agent != 0) {
-            mgmtObject = new _qmf::Queue(agent, this, parent, _name, _store != 
0, _autodelete, _owner != 0);
+            mgmtObject = new _qmf::Queue(agent, this, parent, _name, _store != 
0, _autodelete);
+            mgmtObject->set_exclusive(_owner != 0);
             agent->addObject(mgmtObject, 0, store != 0);
             brokerMgmtObject = (qmf::org::apache::qpid::broker::Broker*) 
broker->GetManagementObject();
             if (brokerMgmtObject)

Modified: qpid/trunk/qpid/cpp/src/qpid/cluster/UpdateClient.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/cluster/UpdateClient.cpp?rev=1367776&r1=1367775&r2=1367776&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/cluster/UpdateClient.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/cluster/UpdateClient.cpp Tue Jul 31 20:57:30 
2012
@@ -89,6 +89,8 @@ using namespace framing;
 namespace arg=client::arg;
 using client::SessionBase_0_10Access;
 
+namespace _qmf = qmf::org::apache::qpid::broker;
+
 // Reserved exchange/queue name for catch-up, avoid clashes with user 
queues/exchanges.
 const std::string UpdateClient::UPDATE("x-qpid.cluster-update");
 // Name for header used to carry expiration information.
@@ -371,13 +373,14 @@ class MessageUpdater {
 
 void UpdateClient::updateQueue(client::AsyncSession& s, const 
boost::shared_ptr<Queue>& q) {
     broker::Exchange::shared_ptr alternateExchange = q->getAlternateExchange();
+    _qmf::Queue* mgmtQueue = 
dynamic_cast<_qmf::Queue*>(q->GetManagementObject());
     s.queueDeclare(
         arg::queue = q->getName(),
         arg::durable = q->isDurable(),
         arg::autoDelete = q->isAutoDelete(),
         arg::alternateExchange = alternateExchange ? 
alternateExchange->getName() : "",
         arg::arguments = q->getSettings(),
-        arg::exclusive = q->hasExclusiveOwner()
+        arg::exclusive = mgmtQueue && mgmtQueue->get_exclusive()
     );
     MessageUpdater updater(q->getName(), s, expiry);
     q->eachMessage(boost::bind(&MessageUpdater::updateQueuedMessage, &updater, 
_1));

Modified: qpid/trunk/qpid/specs/management-schema.xml
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/specs/management-schema.xml?rev=1367776&r1=1367775&r2=1367776&view=diff
==============================================================================
--- qpid/trunk/qpid/specs/management-schema.xml (original)
+++ qpid/trunk/qpid/specs/management-schema.xml Tue Jul 31 20:57:30 2012
@@ -219,7 +219,7 @@
 
     <property name="durable"     type="bool"  access="RC"/>
     <property name="autoDelete"  type="bool"  access="RC"/>
-    <property name="exclusive"   type="bool"  access="RC"/>
+    <property name="exclusive"   type="bool"  access="RO"/>
     <property name="arguments"   type="map"   access="RO" desc="Arguments 
supplied in queue.declare"/>
     <property name="altExchange" type="objId" references="Exchange" 
access="RO" optional="y"/>
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to