fix: race condition in Retry function #603
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.
This PR introduces a test to repro the data race issue and also the fix for it in a separate commit.
Issue discovered in getsops/sops integration tests.
Related: getsops/sops#1226
Failed job: https://github.com/getsops/sops/actions/runs/18238383955/job/51962367579?pr=1226
How to Review
Step 1: Reproduce the Bug (Commit f38c967)
Step 2: Verify the Fix (Commit 7770835)
Step 3: Run Full Test Suite
Problem Description
Root Cause
The
Retry
function had a data race when the context was cancelled:Impact
nil pointer dereference
when accessing response fieldsOriginal Error
Solution
Changes Made
The fix ensures the retry goroutine checks for context cancellation and exits promptly:
1. Added context check before each retry attempt
2. Made sleep interruptible
3. Removed the racing select statement
Signed-off-by: Alessandro De Blasis [email protected]