-
-
Notifications
You must be signed in to change notification settings - Fork 31.7k
logging's QueueListener drops log messages #72117
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
There are two "barrier" like abstractions on Lib/logging/handlers.py in the _monitor method. First _monitor has two loops, what is already kind of a hint something is not right. Second, it has two ways to exit the loop, that also exit the thread:
The problem is, the documentation says that the correct way to not loose records, the stop method must be called, but, the stop method just sets the _stop object and then adds the _sentinel object to the queue. The loop stops when noticing that _stop is set, and then enters a second version of the loop, trying again to see the _sentinel object, but this time with non blocking read. The test case shows the problem, but it also hints about the race conditions by the fact that running the test case under "taskset 1" works, so, to reproduce the issue, run the test under a multiprocessor environment. The proper solution would be to have a proper locking mechanism, otherwise, the _stop object should not be used, and rely only in seeing the _sentinel field; this is what the class DeterministicQueueListener does in the test case. (Reported by Paulo Andrade at https://bugzilla.redhat.com/show_bug.cgi?id=1370484 ) |
Removed 3.3 and 3.4 as they are not in scope for non-security issues. |
New changeset 121b5b41c9e8 by Vinay Sajip in branch 'default': New changeset b2ea0ede3753 by Vinay Sajip in branch '3.5': New changeset 89b185372b2c by Vinay Sajip in branch 'default': |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: