Skip to content

Fix work queue race condition#128

Draft
pavelhoral wants to merge 4 commits intoWrenSecurity:mainfrom
pavelhoral:fix-work-queue-race
Draft

Fix work queue race condition#128
pavelhoral wants to merge 4 commits intoWrenSecurity:mainfrom
pavelhoral:fix-work-queue-race

Conversation

@pavelhoral
Copy link
Copy Markdown
Member

This PR changes the way how worker threads allocate their work (via callback). I made the change as a reaction to flaky (TraditionalWorkQueueTestCase) test that was occasionally able to call queue's isIdle() method at the moment the only task in the queue was already handed over to a worker thread but before the thread registers it within its state property.

I am not sure if this is a good approach how to solve the original issue or if it was possible to rewrite the tests somehow so they don't suffer from the race condition. The changes are on a non-public API, so it should be OK. Nevertheless I am marking this as a DRAFT so it sits here for a while before it potentially gets merged.

@pavelhoral
Copy link
Copy Markdown
Member Author

Failed test run with the race-condition in question - https://github.com/pavelhoral/wrends/actions/runs/24084732218/job/70254359307 (job-logs.txt).

Before this change there was a miniscule window when the server could report
no work has been submited and is being actively worked on (operation dequeued
from the work queue but not yet assigned to a property in work thread).
@pavelhoral pavelhoral force-pushed the fix-work-queue-race branch from 7eb38af to f66e8cb Compare April 7, 2026 20:17
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.

1 participant