fix(logging): avoid race condition in live logging with background threads#14564
Closed
goingforstudying-ctrl wants to merge 7 commits into
Closed
fix(logging): avoid race condition in live logging with background threads#14564goingforstudying-ctrl wants to merge 7 commits into
goingforstudying-ctrl wants to merge 7 commits into
Conversation
This comment was marked as low quality.
This comment was marked as low quality.
This comment was marked as low quality.
This comment was marked as low quality.
This comment was marked as low quality.
This comment was marked as low quality.
…reads Replace global capture suspension in _LiveLoggingStreamHandler.emit() with a temporary redirect of the TerminalWriter's output file to the original stdout. This prevents race conditions where background threads write to stdout/stderr while capture is suspended, causing lost output in capfd/capsys fixtures. Fixes pytest-dev#13693
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
runpytest_subprocess('-s') omits progress percentages,
so PASSED lines won't include '*50%*' etc. patterns.
The minversion setting was accidentally commented out in a previous commit.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #13693
Replace capture suspension in _LiveLoggingStreamHandler.emit() with direct writes to the original stdout stream. This prevents race conditions where background threads write to stdout/stderr while capture is suspended, causing lost output in capfd/capsys fixtures.
The previous implementation used capture_manager.global_and_fixture_disabled() which temporarily restored sys.stdout/stderr to their original values. When background threads logged during this window, their writes bypassed capture. The fix creates a temporary TerminalWriter pointing to the original stdout, allowing log messages to appear on the terminal while keeping capture active for all threads.