OpenStack library for messaging
Go to file
John Eckersberg f4bf955879 rabbit: Avoid busy loop on epoll_wait with heartbeat+eventlet
Calling threading.Event.wait() when using eventlet results in a busy
loop calling epoll_wait, because the Python 2.x
threading.Condition.wait() implementation busy-waits by calling
sleep() with very small values (0.0005..0.05s).  Because sleep() is
monkey-patched by eventlet, this results in many very short timers
being added to the eventlet hub, and forces eventlet to constantly
epoll_wait looking for new data unecessarily.

This utilizes a new Event from eventletutils which conditionalizes the
event primitive depending on whether or not eventlet is being used.
If it is, eventlet.event.Event is used instead of threading.Event.
The eventlet.event.Event implementation does not suffer from the same
busy-wait sleep problem.  If eventlet is not used, the previous
behavior is retained.

For Newton backport, this bundles the Event from eventletutils
directly in oslo.messaging under the _utils module.  It is taken from:

https://review.openstack.org/#/c/389739/

combined with the followup fix:

https://review.openstack.org/#/c/394460/

Change-Id: I5c211092d282e724d1c87ce4d06b6c44b592e764
Depends-On: Id33c9f8c17102ba1fe24c12b053c336b6d265501
Closes-bug: #1518430
(cherry picked from commit a6c193f3eb)
2016-11-08 14:34:15 -05:00
doc/source Merge remote-tracking branch 'origin/master' into resync-to-master 2016-08-17 09:30:09 -04:00
etc Fix spelling typo in output 2015-09-24 18:11:22 +08:00
oslo_messaging rabbit: Avoid busy loop on epoll_wait with heartbeat+eventlet 2016-11-08 14:34:15 -05:00
releasenotes Merge "Introduce TTL for idle connections" 2016-07-27 20:03:38 +00:00
tools Fix calculating of duration in simulator.py 2016-08-16 14:32:19 +00:00
.coveragerc Change ignore-errors to ignore_errors 2015-09-21 14:43:07 +00:00
.gitignore Add reno for releasenotes management 2016-05-19 17:14:31 +03:00
.gitreview Update .gitreview for stable/newton 2016-08-29 16:07:31 -04:00
.testr.conf .testr.conf: revert workaround of testtools bug 2016-02-17 11:34:12 +01:00
CONTRIBUTING.rst Fix wrong bugs report URL in CONTRIBUTING 2015-12-23 15:16:51 +08:00
LICENSE Add oslo.messaging project infrastructure 2013-06-15 08:43:50 +01:00
README.rst Switch badges from 'pypip.in' to 'shields.io' 2015-06-11 20:38:19 -07:00
babel.cfg Setup for translation 2014-06-05 22:48:44 +02:00
requirements.txt Updated from global requirements 2016-08-24 01:37:31 +00:00
setup-test-env-qpid.sh Disable ACL if authentication cannot be performed. 2015-09-16 16:33:58 -04:00
setup-test-env-zmq-proxy.sh [zmq] Redis unavailability is not critical 2016-08-16 11:29:59 +03:00
setup-test-env-zmq-pub-sub.sh Move zmq driver options into its own group 2016-08-05 11:36:50 +03:00
setup-test-env-zmq.sh Move zmq driver options into its own group 2016-08-05 11:36:50 +03:00
setup.cfg [zmq] Redis unavailability is not critical 2016-08-16 11:29:59 +03:00
setup.py Updated from global requirements 2015-09-17 12:16:04 +00:00
test-requirements.txt Updated from global requirements 2016-08-20 01:02:47 +00:00
tox.ini Merge "[zmq] Add py34 configuration for functional tests" 2016-07-13 13:09:16 +00:00

README.rst

Oslo Messaging Library

Latest Version

Downloads

The Oslo messaging API supports RPC and notifications over a number of different messaging transports.