Author: aconway
Date: Fri Apr 18 07:49:15 2008
New Revision: 649554

URL: http://svn.apache.org/viewvc?rev=649554&view=rev
Log:

>From Ted Ross: https://issues.apache.org/jira/browse/QPID-934 
This patch fixes a problem related to multiple management sessions run over the 
same AMQP session (typically seen in test environments).

Modified:
    incubator/qpid/trunk/qpid/python/qpid/management.py

Modified: incubator/qpid/trunk/qpid/python/qpid/management.py
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/qpid/management.py?rev=649554&r1=649553&r2=649554&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/python/qpid/management.py (original)
+++ incubator/qpid/trunk/qpid/python/qpid/management.py Fri Apr 18 07:49:15 2008
@@ -176,6 +176,7 @@
     mch = managementChannel (channel, self.topicCb, self.replyCb, cbContext)
 
     self.channels.append (mch)
+    self.incOutstanding (mch)
     codec = Codec (StringIO (), self.spec)
     self.setHeader (codec, ord ('B'))
     msg = Content  (codec.stream.getvalue ())
@@ -213,6 +214,10 @@
   def syncWaitForStable (self, channel):
     """ Synchronous (blocking) call to wait for schema stability on a channel 
"""
     self.cv.acquire ()
+    if channel.reqsOutstanding == 0:
+      self.cv.release ()
+      return
+
     self.syncInFlight = True
     starttime = time ()
     while channel.reqsOutstanding != 0:
@@ -470,7 +475,6 @@
     sendCodec = Codec (StringIO (), self.spec)
     seq = self.seqMgr.reserve ("outstanding")
     self.setHeader (sendCodec, ord ('P'), seq)
-    self.incOutstanding (ch)
     smsg = Content  (sendCodec.stream.getvalue ())
     smsg["content_type"] = "application/octet-stream"
     smsg["routing_key"]  = "agent"
@@ -508,7 +512,8 @@
     if (cname, hash) not in self.packages[pname]:
       # Send a schema request
       sendCodec = Codec (StringIO (), self.spec)
-      self.setHeader (sendCodec, ord ('S'))
+      seq = self.seqMgr.reserve ("outstanding")
+      self.setHeader (sendCodec, ord ('S'), seq)
       self.incOutstanding (ch)
       sendCodec.encode_shortstr (pname)
       sendCodec.encode_shortstr (cname)


Reply via email to