+ import __original_module_threading
+ import threading
+ __original_module_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
This appears to be the same issue documented here: https:/ /github. com/eventlet/ eventlet/ issues/ 592
However I seem to only hit this with python3.8. Basically nova services fail with:
Exception ignored in: <function _after_fork at 0x7f1100d075e0> python3. 8/threading. py", line 1454, in _after_fork python3. 8/threading. py", line 1454, in _after_fork
Traceback (most recent call last):
File "/usr/lib/
assert len(_active) == 1
AssertionError:
Exception ignored in: <function _after_fork at 0x7f1100d075e0>
Traceback (most recent call last):
File "/usr/lib/
assert len(_active) == 1
AssertionError:
Patching nova/monkey_ patch.py with the following appears to fix this:
diff --git a/nova/ monkey_ patch.py b/nova/ monkey_ patch.py .bb7252c643 100644 monkey_ patch.py monkey_ patch.py
eventlet. monkey_ patch()
index a07ff91dac.
--- a/nova/
+++ b/nova/
@@ -59,6 +59,9 @@ def _monkey_patch():
else:
+ import __original_ module_ threading module_ threading. current_ thread. __globals_ _['_active' ] = threading._active
+ import threading
+ __original_
# 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