Selector Signal fix with multiple workers #2134
Open
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.
What was changed
Fixed a scenario where selectors without default branch was having shared data
c.recValueoverwritten. Also re-enables the SDK flagSDKFlagBlockedSelectorSignalReceiveWhy?
Fix bug
Checklist
Closes Lost messages from workflow.NewChannel(ctx) #2066 and Signal sent to Selector can be lost if Default path blocks #1624
How was this tested:
Added new test
Note
Fixes selector receive logic to avoid losing channel items with multiple workers and changes
UNBLOCK_SIGNAL_SELECTORdefault handling; adds a targeted test.internal/internal_workflow.goto only pre-storec.recValuewhen a default branch exists; otherwise defer storage inreadyBranchto avoid races when multiple selectors block on the same channel. UsesSDKFlagBlockedSelectorSignalReceivegating.unblockSelectorSignaldefault toos.Getenv("UNBLOCK_SIGNAL_SELECTOR") != "false"ininternal/internal_flags.go(enabled unless explicitly set to "false").TestChannelWorkerPatternininternal/internal_workflow_testsuite_test.govalidating no values are lost with two workers consuming the same channel.Written by Cursor Bugbot for commit 128d3ff. This will update automatically on new commits. Configure here.