Fix multi process kubeconfig access support #2380
Merged
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.
Description
Multi process support was broken on every platform, just even worse on windows.
The problem on Windows was that by locking the kubeconfig file itself,
client-go/tools/clientmd.ModifyConfig
is unable to write to the file.The intended use of
flock
is to create a lock file to protect some critical section.This is also what
client-go
does internally (hence the.eksctl
prefix for the lock file).Additionally, we must use the the same
flock.Flock
to lock and unlock the file. Doing otherwise leads to deadlocks and concurrent writes.This wasn't caught because the test that was written with the PR didn't actually test anything, it just made a bunch of calls to
os.Write
, notkubeconfig.Write
.Fixes #2376
Checklist
README.md
, or theuserdocs
directory)area/nodegroup
), target version (e.g.version/0.12.0
) and kind (e.g.kind/improvement
)