Back to bug 1105094

Who When What Removed Added
Petr Matousek 2014-06-05 11:34:59 UTC Blocks 1097306
Eric Sammons 2014-06-09 14:15:48 UTC CC esammons
Mike Cressman 2014-06-10 05:41:11 UTC Status NEW MODIFIED
Fixed In Version python-qpid-0.18-12
errata-xmlrpc 2014-06-10 05:56:21 UTC Status MODIFIED ON_QA
Petr Matousek 2014-06-13 12:31:50 UTC Depends On 1109079, 1108005
Petr Matousek 2014-06-16 17:26:45 UTC Status ON_QA VERIFIED
Petr Matousek 2014-06-17 09:06:08 UTC QA Contact mrgqe-bugs pematous
Ken Giusti 2014-06-20 17:20:50 UTC Doc Text Cause:
The messaging client used by neutron re-writes (also known as 'monkey-patching') the python's selector module in order to support eventlet threading. This re-write does not update the select.poll() however. select.poll() is not supported by eventlet..

Consequence:
qpid-python uses select.poll() to manage I/O. Since the poll() method is not 'fixed' to work with eventlet threading, the call to poll() deadlocks and neutron server hangs.

Fix:
Updated the qpid-python library to avoid calling poll() if it detects that eventlet threading is used. It calls select() instead.

Result:
select() is eventlet threading aware, and no deadlock occurs.
wes hayutin 2014-06-23 18:45:26 UTC Depends On 1112372
Jared MORGAN 2014-06-27 03:38:28 UTC Doc Text Cause:
The messaging client used by neutron re-writes (also known as 'monkey-patching') the python's selector module in order to support eventlet threading. This re-write does not update the select.poll() however. select.poll() is not supported by eventlet..

Consequence:
qpid-python uses select.poll() to manage I/O. Since the poll() method is not 'fixed' to work with eventlet threading, the call to poll() deadlocks and neutron server hangs.

Fix:
Updated the qpid-python library to avoid calling poll() if it detects that eventlet threading is used. It calls select() instead.

Result:
select() is eventlet threading aware, and no deadlock occurs.
Previously, the neutron messaging client rewrote (by method of "monkey-patching") the python selector module to support eventlet threading. The rewritten client did not update select.poll() during this process, which is used by qpid-python to manage I/O. This resulted in poll() deadlocks and neutron server hangs. The fix introduces updates to the qpid-python library that avoid calling poll() if eventlet threading is detected. Instead, the eventlet-aware select() is called, which prevents deadlocks from occurring and corrects the originally reported issue.
errata-xmlrpc 2014-06-30 09:01:02 UTC Status VERIFIED RELEASE_PENDING
errata-xmlrpc 2014-06-30 10:26:30 UTC Status RELEASE_PENDING CLOSED
Resolution --- ERRATA
Last Closed 2014-06-30 06:26:30 UTC
Ken Giusti 2014-09-17 21:26:50 UTC Depends On 1143749
Irina Boverman 2014-12-18 19:38:30 UTC Depends On 1175872
Irina Boverman 2014-12-18 19:58:51 UTC Depends On 1175872

Back to bug 1105094