Repository navigation
Ensure that pending claims count towards worker capacity - #994
Merged
Merged
Conversation
josephjclark
marked this pull request as ready for review
September 11, 2025 12:41
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.
We have discovered an issue in the worker related to the
work-available(wake up) alert.The wake up event will instantly trigger a claim, skipping the workloop entirely.
Now, if there are runs in progress, the
claimfunction will abort and say "sorry, I'm already at capacity".The oversight was: there is no check as to whether or not a claim request has been sent out and is being served.
This means that, particularly if Lightning is being slow to respond, a worker could receive 50 wake up events and send out 50 claim requests before lightning replies. Suddenly the poor worker needs to process 50 runs at a time.
Now there is some mitigation around this in the engine - the engine will buffer its own little queue and ensure that it never has more than
MAX_WORKERSrunning.But it does mean that the worker can take way more than its share, and significantly increases the risk that a greedy worker could a) blow up or b) timeout a bunch of runs that are sitting in its internal queue.
So this PR adds logic to include outstanding claim requests in the server's capacity, essentially. When a worker makes a claim, it assumes that claim will be honoured and reserves space to satisfy the number of runs returned.
AI Usage
Please disclose how you've used AI in this work (it's cool, we just want to know!):
You can read more details in our Responsible AI Policy
Release branch checklist
Delete this section if this is not a release PR.
If this IS a release branch:
pnpm changeset versionfrom root to bump versionspnpm installpnpm changeset tagto generate tagsgit push --tagsTags may need updating if commits come in after the tags are first generated.