diff --git a/pkg/volume/csi/nodeinfomanager/nodeinfomanager.go b/pkg/volume/csi/nodeinfomanager/nodeinfomanager.go index 333c55792db..3d348a35b25 100644 --- a/pkg/volume/csi/nodeinfomanager/nodeinfomanager.go +++ b/pkg/volume/csi/nodeinfomanager/nodeinfomanager.go @@ -379,6 +379,9 @@ func (nim *nodeInfoManager) tryUpdateCSINode( maxAttachLimit int64, topology map[string]string) error { + nim.lock.Lock() + defer nim.lock.Unlock() + nodeInfo, err := csiKubeClient.StorageV1().CSINodes().Get(context.TODO(), string(nim.nodeName), metav1.GetOptions{}) if nodeInfo == nil || errors.IsNotFound(err) { nodeInfo, err = nim.CreateCSINode() @@ -412,6 +415,9 @@ func (nim *nodeInfoManager) InitializeCSINodeWithAnnotation() error { } func (nim *nodeInfoManager) tryInitializeCSINodeWithAnnotation(csiKubeClient clientset.Interface) error { + nim.lock.Lock() + defer nim.lock.Unlock() + nodeInfo, err := csiKubeClient.StorageV1().CSINodes().Get(context.TODO(), string(nim.nodeName), metav1.GetOptions{}) if nodeInfo == nil || errors.IsNotFound(err) { // CreateCSINode will set the annotation @@ -602,6 +608,9 @@ func (nim *nodeInfoManager) tryUninstallDriverFromCSINode( csiKubeClient clientset.Interface, csiDriverName string) error { + nim.lock.Lock() + defer nim.lock.Unlock() + nodeInfoClient := csiKubeClient.StorageV1().CSINodes() nodeInfo, err := nodeInfoClient.Get(context.TODO(), string(nim.nodeName), metav1.GetOptions{}) if err != nil && errors.IsNotFound(err) {