This repository has been archived by the owner on May 15, 2023. It is now read-only.
Support for concurrent nodepool CRUD operations #1174
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.
The purpose of these changes is to implement support in the beta provider for concurrent node pool CRUD operations on a single cluster.
The GA provider should be unchanged (the global mutex store changes described below are technically included in the GA provider but the GA provider behavior is unchanged - however, I am happy to make the global mutex store changes specific to the beta provider if that is preferred).
The changes to the beta provider include:
sync.RWMutex
instead ofsync.Mutex
and adding the necessary methods to theMutexKV
struct to support acquiring shared/read locks.FAILED_PRECONDITION
canonical code), to safely retry concurrent operations blocked by a lock conflict with another operation.If this PR is for Terraform, I acknowledge that I have:
make test
andmake lint
to ensure it passes unit and linter tests.Release Note Template for Downstream PRs (will be copied)
Reviewer Notes
TestAccContainerNodePool
acceptance tests with the beta provider and they passed, althoughTestAccContainerNodePool_withWorkloadIdentityConfig
seems flaky (only passed when I ran it individually). So it seems to be fully backward compatible.*.tf
files to create/delete multiple NPs concurrently, and confirmed the concurrency works.Derived from GoogleCloudPlatform/magic-modules#6748