[8.x] Add option to release unique job locks before processing #35255
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.
Based on our discussion at #35042, there may be use cases where it is desirable to release unique job locks before the job starts processing (to avoid race conditions between job completion and unlocking). This PR allows the option to release the unique job lock before processing if the
$uniqueUntilStart
is set to true like so:This is backwards-compatible. If the job raises an error, we don't attempt to re-acquire the lock and may be duplicate enqueued. This should be fine as anyone who wants to use this feature would need to make sure that the job is idempotent because a duplicate job dispatch can happen while the job is processing. This is similar to Sidekiq's unique_until start feature.