From 2078ef850c93b47ec1bcd044450b589d7a8fc0b5 Mon Sep 17 00:00:00 2001 From: Corey Bryant Date: Wed, 12 Feb 2020 16:32:40 -0500 Subject: [PATCH] Monkey patch original current_thread _active Monkey patch the original current_thread to use the up-to-date _active global variable. This solution is based on that documented at: https://github.com/eventlet/eventlet/issues/592 Change-Id: I4872169413f27aeaff8d8fdfa5cdaf6ee32f4680 Closes-Bug: #1863021 --- nova/monkey_patch.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/nova/monkey_patch.py b/nova/monkey_patch.py index a07ff91dacb1..1a610248ad4e 100644 --- a/nova/monkey_patch.py +++ b/nova/monkey_patch.py @@ -59,6 +59,13 @@ def _monkey_patch(): else: eventlet.monkey_patch() + # Monkey patch the original current_thread to use the up-to-date _active + # global variable. See https://bugs.launchpad.net/bugs/1863021 and + # https://github.com/eventlet/eventlet/issues/592 + import __original_module_threading as orig_threading + import threading + orig_threading.current_thread.__globals__['_active'] = threading._active + # NOTE(rpodolyaka): import oslo_service first, so that it makes eventlet # hub use a monotonic clock to avoid issues with drifts of system time (see # LP 1510234 for details)