[18.0][FIX] queue_job_batch: prevent batches stuck in progress#885
Open
[18.0][FIX] queue_job_batch: prevent batches stuck in progress#885
Conversation
- Remove identity_exact from check_state delay to prevent race conditions - Trigger check_state for all terminal states (done, cancelled, failed) Fixes OCA#810
c36e62b to
5bcaf4f
Compare
Add tests to verify: - Failed jobs trigger check_state on the batch - Cancelled jobs trigger check_state on the batch - No deduplication occurs when multiple jobs complete (race condition fix)
5bcaf4f to
3783e9a
Compare
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.
Summary
This PR fixes a bug where job batches could remain in the "In Progress" state indefinitely, even after all associated jobs had finished.
Problem
Two main issues were identified in the
check_statetrigger logic:identity_exactwithwith_delay()caused thecheck_statejob for the last finishing batch job to be deduplicated (skipped) if a previouscheck_statejob from the same batch was still pending or enqueued. This meant the final state transition to "Finished" might never happen.donestate, ignoring jobs that ended infailedorcancelled.Solution
identity_key=identity_exactfrom thecheck_statedelay call to ensure every job completion attempts a state check, preventing the race condition.done,cancelled, andfailed.Fixes #810