fix(executor): prevent race condition in pause persistence#3088
Open
h30s wants to merge 1 commit intosimstudioai:stagingfrom
Open
fix(executor): prevent race condition in pause persistence#3088h30s wants to merge 1 commit intosimstudioai:stagingfrom
h30s wants to merge 1 commit intosimstudioai:stagingfrom
Conversation
|
@h30s is attempting to deploy a commit to the Sim Team on Vercel. A member of the Team first needs to authorize it. |
Contributor
Greptile OverviewGreptile SummaryFixed a race condition in pause/resume flow where resume requests could fail with "Paused execution not found" if they arrived before the paused state was fully persisted to the database. Key Changes:
How it works: Confidence Score: 5/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant WF as Workflow Executor
participant PM as PauseResumeManager
participant DB as Database
participant API as Resume API
participant Queue as processQueuedResumes
Note over WF,Queue: Race Condition Scenario (Fixed)
WF->>PM: persistPauseResult()
activate PM
PM->>DB: BEGIN TRANSACTION
activate DB
PM->>DB: INSERT/UPDATE paused_executions
Note over PM,DB: Row locked in transaction
par Concurrent Resume Request
API->>PM: enqueueOrStartResume()
activate PM
PM->>DB: SELECT ... FOR UPDATE
Note over PM,DB: Waits for transaction commit
end
DB-->>PM: INSERT committed
PM->>DB: COMMIT TRANSACTION
deactivate DB
Note over PM: Transaction committed,<br/>row now visible
DB-->>PM: paused execution found
PM->>DB: Insert/update resume queue
PM-->>API: Resume started/queued
deactivate PM
PM->>Queue: processQueuedResumes(executionId)
activate Queue
Queue->>DB: SELECT pending resumes
Queue->>PM: startResumeExecution()
deactivate Queue
deactivate PM
|
10 tasks
f0e3c67 to
0365b3b
Compare
Author
|
@waleedlatif1 Ready from my Side! |
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
Fixes a race condition where a resume request could fail with "Paused execution not found" if it arrived immediately after a workflow paused but before the paused state was fully persisted.
This PR ensures atomic persistence of paused executions so resume requests are handled reliably, even under high-throughput or near-simultaneous pause/resume scenarios.
Fixes #3081
Type of Change
Testing
How this was tested
What reviewers should focus on
persistPauseResultprocessQueuedResumesTest Results
Checklist
Contributor License Agreement (CLA)
Screenshots/Videos
Not applicable — backend-only change with no UI impact.