Skip to content

fix: flush queued logs without stopping the worker - #370

Open
Shubham-Padkonde wants to merge 1 commit into
aliyun:masterfrom
Shubham-Padkonde:fix/flush-without-stopping-worker
Open

Shubham-Padkonde wants to merge 1 commit into
aliyun:masterfrom
Shubham-Padkonde:fix/flush-without-stopping-worker

Conversation

@Shubham-Padkonde

Copy link
Copy Markdown

Calling QueuedLogHandler.flush() currently stops its background worker. Records emitted afterward remain queued instead of being sent. This addresses the flush/stop behavior reported in #203.

Make flush() wait for outstanding sends, bounded by close_wait, while leaving the worker available for subsequent records. Move worker shutdown to close(). Queue entries are marked complete after sending (including error handling), so flushing also waits for a batch that the worker has already dequeued. During shutdown, check that the queue is empty before exiting after an empty batch.

Add real-worker regression tests for repeated flushes, empty flushes, an in-flight send, the flush timeout, send failures, and close. The initial five tests failed before the change. The fix does not make a handler reusable after close() or logging reconfiguration that closes it.

Validation: python -m pytest tests/unit tests/ci/build-test -q — 63 passed, 8 skipped on Python 3.12. Live SLS integration and legacy Python runtimes were not exercised locally.

@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants