[
https://issues.apache.org/jira/browse/QPID-1250?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Gordon Sim resolved QPID-1250.
------------------------------
Resolution: Fixed
> Race in detaching for 0-10 python client
> ----------------------------------------
>
> Key: QPID-1250
> URL: https://issues.apache.org/jira/browse/QPID-1250
> Project: Qpid
> Issue Type: Bug
> Components: Python Client
> Affects Versions: M3
> Reporter: Gordon Sim
> Assignee: Gordon Sim
> Priority: Minor
> Fix For: M3
>
>
> In delegates.py, the session_detach() handler first calls detach on the
> connection which updates the record of attached sessions with the connections
> lock held, then sends the session_detached() response to the peer.
> If an application creates a new session between the session being removed
> from the attached set and the detached response being sent, the channel can
> get reused for the new session and there's a race between the sending of
> detached (for the old session) and attach (for the new session) on that same
> channel.
> My suggested fix for this is just to send the detached before actually
> detaching:
> Index: qpid/delegates.py
> ===================================================================
> --- qpid/delegates.py (revision 686688)
> +++ qpid/delegates.py (working copy)
> @@ -74,8 +74,8 @@
> notify(ch.session.condition)
> def session_detach(self, ch, d):
> + ch.session_detached(d.name)
> ssn = self.connection.detach(d.name, ch)
> - ch.session_detached(d.name)
> def session_detached(self, ch, d):
> self.connection.detach(d.name, ch)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.