You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Gordon Sim (JIRA)" <qp...@incubator.apache.org> on 2008/08/18 21:25:45 UTC
[jira] Resolved: (QPID-1250) Race in detaching for 0-10 python
client
[ 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.