Bug 1175882 - [RHEL 7]neutron-server gets stuck in poll python-qpid 0.22
Summary: [RHEL 7]neutron-server gets stuck in poll python-qpid 0.22
Keywords:
Status: VERIFIED
Alias: None
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: python-qpid
Version: 3.0
Hardware: Unspecified
OS: Unspecified
high
high
Target Milestone: 3.0.2
: ---
Assignee: messaging-bugs
QA Contact: Messaging QE
URL:
Whiteboard:
Depends On: 1175872
Blocks:
TreeView+ depends on / blocked
 
Reported: 2014-12-18 19:59 UTC by Irina Boverman
Modified: 2023-06-14 21:30 UTC (History)
12 users (show)

Fixed In Version: python-qpid-0.22-19
Doc Type: Bug Fix
Doc Text:
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.
Clone Of: 1175872
Environment:
Last Closed:
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Apache JIRA QPID-5790 0 None None None Never

Comment 6 Toni Freger 2015-01-18 11:58:11 UTC
Have tested RHOS6 on RHEL7

Packages:
qpid-cpp-server-0.22-50.el7.x86_64
qpid-proton-c-0.7-4.el7.x86_64
qpid-cpp-client-0.22-50.el7.x86_64
python-qpid-0.22-19.el7.noarch

openstack-neutron-ml2-2014.2.1-6.el7ost.noarch
openstack-neutron-openvswitch-2014.2.1-6.el7ost.noarch

The installation works properly.
Also tested:
1.Internal\External networks
2.FloatingIP
3.Security Group - SSH and ICMP

Comment 8 Jared MORGAN 2015-03-02 23:21:54 UTC
Hey Petr

Could you please sanity check my Release Note for this issue. I want to ensure I haven't reversed the conditions/servers/poll issue when I constructed the RN.

Cheers

J

Comment 9 Petr Matousek 2015-03-03 11:05:28 UTC
Hi Jared, I believe you're wrong in the RN.

"..qpid client has been improved to change the implementation to prefer poll() over select(), which fixes the original issue."
^^ is wrong, because select() shall be preferred to poll() if patched by eventlet. That fixes the original issue.

More detail:
previously the python client was changed to prefer poll instead of select (QPID-5588), and as eventlet greenthreads library used by openstack-neutron works only with select() this issue arise (QPID-5790). Because the selection between select() and poll() is being done dynamically, the condition was improved to prefer select() to poll() if patched by eventlet.

ALSO I believe that doc text used here: bug 1102040 (probably written by you:) is precise and exactly the same text may be used here as well (this bug is a clone of 1102040).

Comment 10 Jared MORGAN 2015-03-03 21:50:45 UTC
(In reply to Petr Matousek from comment #9)
> Hi Jared, I believe you're wrong in the RN.
> 
> "..qpid client has been improved to change the implementation to prefer
> poll() over select(), which fixes the original issue."
> ^^ is wrong, because select() shall be preferred to poll() if patched by
> eventlet. That fixes the original issue.
> 
> More detail:
> previously the python client was changed to prefer poll instead of select
> (QPID-5588), and as eventlet greenthreads library used by openstack-neutron
> works only with select() this issue arise (QPID-5790). Because the selection
> between select() and poll() is being done dynamically, the condition was
> improved to prefer select() to poll() if patched by eventlet.
> 
> ALSO I believe that doc text used here: bug 1102040 (probably written by
> you:) is precise and exactly the same text may be used here as well (this
> bug is a clone of 1102040).

Thanks for the link to the above related BZ, Petr. I've updated the text with the info from BZ#1102040


Note You need to log in before you can comment on or make changes to this bug.