fix(envd): return error when concurrent /init races on NFS mount - #3460
Open
AdaAibaby wants to merge 1 commit into
Open
fix(envd): return error when concurrent /init races on NFS mount#3460AdaAibaby wants to merge 1 commit into
AdaAibaby wants to merge 1 commit into
Conversation
setupNFS guards against concurrent callers with an atomic CAS, but on contention it returned nil (the named return zero value). The second caller then continued as if NFS was mounted, so the sandbox started with missing volume mounts and no indication of failure. Return an explicit error so the caller receives a 500 and can retry, rather than silently succeeding with no mount.
AdaAibaby
force-pushed
the
fix/envd-nfs-concurrent-init-v2
branch
from
July 30, 2026 09:28
37b9c37 to
dbaa103
Compare
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.
When two concurrent
/initrequests race onisMountingNFS, theCompareAndSwapguard insetupNFSreturns the named error valuee, which isnil. The second caller proceeds as if NFS mounted successfully — sandbox starts with no volume mounts and no error surfaced to the caller.Fix: return a package-level sentinel
ErrConcurrentNFSInitso the caller receives a 500 and can retry. Using a sentinel (rather thanfmt.Errorf) allows callers to match the error witherrors.Is(), consistent withErrAccessTokenMismatchand other sentinels in the same file.Change
1 file, 2 lines changed.
/cc @jakubno @dobrac @ValentaTomas @arkamar @tvi Looking forward to your code review.