Skip to content

Commit ec36ff4

Browse files
authored
Merge pull request kubernetes#90576 from gaurav1086/azure_optimize_locks
[Provider/Azure] optimize mutex locks
2 parents 1cbda24 + 862c30a commit ec36ff4

File tree

1 file changed

+9
-9
lines changed
  • staging/src/k8s.io/legacy-cloud-providers/azure

1 file changed

+9
-9
lines changed

staging/src/k8s.io/legacy-cloud-providers/azure/azure.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ type Cloud struct {
253253
// ipv6DualStack allows overriding for unit testing. It's normally initialized from featuregates
254254
ipv6DualStackEnabled bool
255255
// Lock for access to node caches, includes nodeZones, nodeResourceGroups, and unmanagedNodes.
256-
nodeCachesLock sync.Mutex
256+
nodeCachesLock sync.RWMutex
257257
// nodeZones is a mapping from Zone to a sets.String of Node's names in the Zone
258258
// it is updated by the nodeInformer
259259
nodeZones map[string]sets.String
@@ -812,8 +812,8 @@ func (az *Cloud) GetActiveZones() (sets.String, error) {
812812
return nil, fmt.Errorf("Azure cloud provider doesn't have informers set")
813813
}
814814

815-
az.nodeCachesLock.Lock()
816-
defer az.nodeCachesLock.Unlock()
815+
az.nodeCachesLock.RLock()
816+
defer az.nodeCachesLock.RUnlock()
817817
if !az.nodeInformerSynced() {
818818
return nil, fmt.Errorf("node informer is not synced when trying to GetActiveZones")
819819
}
@@ -839,8 +839,8 @@ func (az *Cloud) GetNodeResourceGroup(nodeName string) (string, error) {
839839
return az.ResourceGroup, nil
840840
}
841841

842-
az.nodeCachesLock.Lock()
843-
defer az.nodeCachesLock.Unlock()
842+
az.nodeCachesLock.RLock()
843+
defer az.nodeCachesLock.RUnlock()
844844
if !az.nodeInformerSynced() {
845845
return "", fmt.Errorf("node informer is not synced when trying to GetNodeResourceGroup")
846846
}
@@ -861,8 +861,8 @@ func (az *Cloud) GetResourceGroups() (sets.String, error) {
861861
return sets.NewString(az.ResourceGroup), nil
862862
}
863863

864-
az.nodeCachesLock.Lock()
865-
defer az.nodeCachesLock.Unlock()
864+
az.nodeCachesLock.RLock()
865+
defer az.nodeCachesLock.RUnlock()
866866
if !az.nodeInformerSynced() {
867867
return nil, fmt.Errorf("node informer is not synced when trying to GetResourceGroups")
868868
}
@@ -882,8 +882,8 @@ func (az *Cloud) GetUnmanagedNodes() (sets.String, error) {
882882
return nil, nil
883883
}
884884

885-
az.nodeCachesLock.Lock()
886-
defer az.nodeCachesLock.Unlock()
885+
az.nodeCachesLock.RLock()
886+
defer az.nodeCachesLock.RUnlock()
887887
if !az.nodeInformerSynced() {
888888
return nil, fmt.Errorf("node informer is not synced when trying to GetUnmanagedNodes")
889889
}

0 commit comments

Comments
 (0)