From 862c30a2284a54a8c91778828b41f157b6a506ec Mon Sep 17 00:00:00 2001 From: Gaurav Singh Date: Tue, 28 Apr 2020 22:09:20 -0400 Subject: [PATCH] [Provider/Azure] optimize mutex locks --- .../legacy-cloud-providers/azure/azure.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/staging/src/k8s.io/legacy-cloud-providers/azure/azure.go b/staging/src/k8s.io/legacy-cloud-providers/azure/azure.go index 22be4e88a8d..16dca063302 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/azure/azure.go +++ b/staging/src/k8s.io/legacy-cloud-providers/azure/azure.go @@ -248,7 +248,7 @@ type Cloud struct { // ipv6DualStack allows overriding for unit testing. It's normally initialized from featuregates ipv6DualStackEnabled bool // Lock for access to node caches, includes nodeZones, nodeResourceGroups, and unmanagedNodes. - nodeCachesLock sync.Mutex + nodeCachesLock sync.RWMutex // nodeZones is a mapping from Zone to a sets.String of Node's names in the Zone // it is updated by the nodeInformer nodeZones map[string]sets.String @@ -801,8 +801,8 @@ func (az *Cloud) GetActiveZones() (sets.String, error) { return nil, fmt.Errorf("Azure cloud provider doesn't have informers set") } - az.nodeCachesLock.Lock() - defer az.nodeCachesLock.Unlock() + az.nodeCachesLock.RLock() + defer az.nodeCachesLock.RUnlock() if !az.nodeInformerSynced() { return nil, fmt.Errorf("node informer is not synced when trying to GetActiveZones") } @@ -828,8 +828,8 @@ func (az *Cloud) GetNodeResourceGroup(nodeName string) (string, error) { return az.ResourceGroup, nil } - az.nodeCachesLock.Lock() - defer az.nodeCachesLock.Unlock() + az.nodeCachesLock.RLock() + defer az.nodeCachesLock.RUnlock() if !az.nodeInformerSynced() { return "", fmt.Errorf("node informer is not synced when trying to GetNodeResourceGroup") } @@ -850,8 +850,8 @@ func (az *Cloud) GetResourceGroups() (sets.String, error) { return sets.NewString(az.ResourceGroup), nil } - az.nodeCachesLock.Lock() - defer az.nodeCachesLock.Unlock() + az.nodeCachesLock.RLock() + defer az.nodeCachesLock.RUnlock() if !az.nodeInformerSynced() { return nil, fmt.Errorf("node informer is not synced when trying to GetResourceGroups") } @@ -871,8 +871,8 @@ func (az *Cloud) GetUnmanagedNodes() (sets.String, error) { return nil, nil } - az.nodeCachesLock.Lock() - defer az.nodeCachesLock.Unlock() + az.nodeCachesLock.RLock() + defer az.nodeCachesLock.RUnlock() if !az.nodeInformerSynced() { return nil, fmt.Errorf("node informer is not synced when trying to GetUnmanagedNodes") }