improvement(executor): upgraded abort controller to handle aborts for loops and parallels#2880
Merged
icecrasher321 merged 2 commits intostagingfrom Jan 20, 2026
Merged
improvement(executor): upgraded abort controller to handle aborts for loops and parallels#2880icecrasher321 merged 2 commits intostagingfrom
icecrasher321 merged 2 commits intostagingfrom
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
… loops and parallels
6606006 to
fa54d99
Compare
Contributor
Greptile Summaryupgraded abort controller implementation to handle mid-loop and mid-parallel cancellations by introducing a cached abort promise pattern that enables immediate cancellation without waiting for all executing nodes to complete Key changes:
The implementation properly handles edge cases like pre-aborted signals, preserves partial outputs, and maintains metadata on cancellation. Confidence Score: 4/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant User
participant AbortController
participant Engine
participant AbortPromise
participant ProcessQueue
participant NodeExecution
User->>AbortController: abort()
AbortController->>Engine: abort event
Engine->>Engine: set cancelledFlag = true
Engine->>AbortPromise: resolve()
alt During Queue Processing
ProcessQueue->>Engine: checkCancellation()
Engine-->>ProcessQueue: true (cancelled)
ProcessQueue->>ProcessQueue: break queue loop
end
alt During Parallel Execution
NodeExecution->>NodeExecution: executing parallel branches
Engine->>Engine: waitForAnyExecution()
Engine->>Engine: Promise.race([...executing, abortPromise])
AbortPromise-->>Engine: resolves first
Engine-->>ProcessQueue: returns immediately
Note over NodeExecution: unfinished executions continue<br/>but won't be awaited
end
alt During Loop Iteration
ProcessQueue->>Engine: checkCancellation()
Engine-->>ProcessQueue: true (cancelled)
ProcessQueue->>ProcessQueue: break loop
Engine->>Engine: skip waitForAllExecutions()
end
Engine->>Engine: build result with status='cancelled'
Engine-->>User: ExecutionResult (cancelled)
|
Collaborator
Author
|
@greptile |
waleedlatif1
added a commit
that referenced
this pull request
Jan 21, 2026
* fix(google): wrap primitive tool responses for Gemini API compatibility (#2900) * fix(canonical): copilot path + update parent (#2901) * fix(rss): add top-level title, link, pubDate fields to RSS trigger output (#2902) * fix(rss): add top-level title, link, pubDate fields to RSS trigger output * fix(imap): add top-level fields to IMAP trigger output * improvement(browseruse): add profile id param (#2903) * improvement(browseruse): add profile id param * make request a stub since we have directExec * improvement(executor): upgraded abort controller to handle aborts for loops and parallels (#2880) * improvement(executor): upgraded abort controller to handle aborts for loops and parallels * comments * improvement(files): update execution for passing base64 strings (#2906) * progress * improvement(execution): update execution for passing base64 strings * fix types * cleanup comments * path security vuln * reject promise correctly * fix redirect case * remove proxy routes * fix tests * use ipaddr * feat(tools): added textract, added v2 for mistral, updated tag dropdown (#2904) * feat(tools): added textract * cleanup * ack pr comments * reorder * removed upload for textract async version * fix additional fields dropdown in editor, update parser to leave validation to be done on the server * added mistral v2, files v2, and finalized textract * updated the rest of the old file patterns, updated mistral outputs for v2 * updated tag dropdown to parse non-operation fields as well * updated extension finder * cleanup * added description for inputs to workflow * use helper for internal route check * fix tag dropdown merge conflict change * remove duplicate code --------- Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai> * fix(ui): change add inputs button to match output selector (#2907) * fix(canvas): removed invite to workspace from canvas popover (#2908) * fix(canvas): removed invite to workspace * removed unused props * fix(copilot): legacy tool display names (#2911) * fix(a2a): canonical merge (#2912) * fix canonical merge * fix empty array case * fix(change-detection): copilot diffs have extra field (#2913) * improvement(logs): improved logs ui bugs, added subflow disable UI (#2910) * improvement(logs): improved logs ui bugs, added subflow disable UI * added duplicate to action bar for subflows * feat(broadcast): email v0.5 (#2905) --------- Co-authored-by: Vikhyath Mondreti <vikhyathvikku@gmail.com> Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai> Co-authored-by: Emir Karabeg <78010029+emir-karabeg@users.noreply.github.com>
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
Type of Change
Testing
Tested manually, added unit tests
Checklist