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)
