Comment 4 for bug 1420788

Revision history for this message
Alexander Makarov (amakarov) wrote :

Boris, as we discovered this is not the root cause of the problem.

David, as I wrote in the bug description the issue is in initialization sequence:

- logging system initializes all it's stuff including loks (thread.lock) objects
- eventlet monkey-patching replaces thread module, including locks
But the locks, initialized before and linked to objects by reference are not replaced.

In outcome we have logging system using standard, not patched thread.lock objects in an eventlet environment.

Now the case:
here el - eventlet

el1: aquire lock
el1: begin writing log record. This is an IO operation so execution is passed to the next eventlet el2
el2: aquire lock
entire thread: "I'm waiting for lock to release, what do you want of me?"

The solution is to initialize logging after eventlet monkey-patching