Skip to content

Commit

Permalink
Merge pull request kubernetes#16081 from sl1pm4t/fix-panic
Browse files Browse the repository at this point in the history
fix: concurrent map write panic
  • Loading branch information
k8s-ci-robot authored and sl1pm4t committed Nov 15, 2023
1 parent 25ab750 commit 243a6da
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions upup/pkg/fi/cloudup/gce/gce_cloud.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (
"os"
"os/exec"
"strings"
"sync"

"golang.org/x/oauth2/google"
"google.golang.org/api/cloudresourcemanager/v1"
Expand Down Expand Up @@ -86,6 +87,7 @@ func (c *gceCloudImplementation) ProviderID() kops.CloudProviderID {
}

var gceCloudInstances map[string]GCECloud = make(map[string]GCECloud)
var gceCloudInstancesMapMutex = sync.RWMutex{}

// DefaultProject returns the current project configured in the gcloud SDK, ("", nil) if no project was set
func DefaultProject() (string, error) {
Expand Down Expand Up @@ -119,7 +121,9 @@ func DefaultProject() (string, error) {
}

func NewGCECloud(region string, project string, labels map[string]string) (GCECloud, error) {
gceCloudInstancesMapMutex.RLock()
i := gceCloudInstances[region+"::"+project]
gceCloudInstancesMapMutex.RUnlock()
if i != nil {
return i.(gceCloudInternal).WithLabels(labels), nil
}
Expand Down Expand Up @@ -179,6 +183,8 @@ func NewGCECloud(region string, project string, labels map[string]string) (GCECl
}

func CacheGCECloudInstance(region string, project string, c GCECloud) {
gceCloudInstancesMapMutex.Lock()
defer gceCloudInstancesMapMutex.Unlock()
gceCloudInstances[region+"::"+project] = c
}

Expand Down

0 comments on commit 243a6da

Please sign in to comment.