diff --git a/pkg/kubelet/volumemanager/cache/actual_state_of_world.go b/pkg/kubelet/volumemanager/cache/actual_state_of_world.go index 2741e459f32..91e2d3436ac 100644 --- a/pkg/kubelet/volumemanager/cache/actual_state_of_world.go +++ b/pkg/kubelet/volumemanager/cache/actual_state_of_world.go @@ -168,10 +168,6 @@ type ActualStateOfWorld interface { // or have a mount/unmount operation pending. GetAttachedVolumes() []AttachedVolume - // SyncReconstructedVolume check the volume.outerVolumeSpecName in asw and - // the one populated from dsw, if they do not match, update this field from the value from dsw. - SyncReconstructedVolume(volumeName v1.UniqueVolumeName, podName volumetypes.UniquePodName, outerVolumeSpecName string) - // Add the specified volume to ASW as uncertainly attached. AddAttachUncertainReconstructedVolume(volumeName v1.UniqueVolumeName, volumeSpec *volume.Spec, nodeName types.NodeName, devicePath string) error @@ -1119,19 +1115,6 @@ func (asw *actualStateOfWorld) GetUnmountedVolumes() []AttachedVolume { return unmountedVolumes } -func (asw *actualStateOfWorld) SyncReconstructedVolume(volumeName v1.UniqueVolumeName, podName volumetypes.UniquePodName, outerVolumeSpecName string) { - asw.Lock() - defer asw.Unlock() - if volumeObj, volumeExists := asw.attachedVolumes[volumeName]; volumeExists { - if podObj, podExists := volumeObj.mountedPods[podName]; podExists { - if podObj.outerVolumeSpecName != outerVolumeSpecName { - podObj.outerVolumeSpecName = outerVolumeSpecName - asw.attachedVolumes[volumeName].mountedPods[podName] = podObj - } - } - } -} - func (asw *actualStateOfWorld) newAttachedVolume( attachedVolume *attachedVolume) AttachedVolume { seLinuxMountContext := "" diff --git a/pkg/kubelet/volumemanager/reconciler/reconciler.go b/pkg/kubelet/volumemanager/reconciler/reconciler.go index b5f1e424a62..07b5f573cbf 100644 --- a/pkg/kubelet/volumemanager/reconciler/reconciler.go +++ b/pkg/kubelet/volumemanager/reconciler/reconciler.go @@ -24,10 +24,10 @@ import ( func (rc *reconciler) Run(stopCh <-chan struct{}) { rc.reconstructVolumes() klog.InfoS("Reconciler: start to sync state") - wait.Until(rc.reconcileNew, rc.loopSleepDuration, stopCh) + wait.Until(rc.reconcile, rc.loopSleepDuration, stopCh) } -func (rc *reconciler) reconcileNew() { +func (rc *reconciler) reconcile() { readyToUnmount := rc.readyToUnmount() if readyToUnmount { // Unmounts are triggered before mounts so that a volume that was diff --git a/pkg/kubelet/volumemanager/reconciler/reconciler_test.go b/pkg/kubelet/volumemanager/reconciler/reconciler_test.go index c57bba4793a..451ba289ad4 100644 --- a/pkg/kubelet/volumemanager/reconciler/reconciler_test.go +++ b/pkg/kubelet/volumemanager/reconciler/reconciler_test.go @@ -2382,7 +2382,7 @@ func TestReconcileWithUpdateReconstructedFromAPIServer(t *testing.T) { reconciler.volumesNeedUpdateFromNodeStatus = append(reconciler.volumesNeedUpdateFromNodeStatus, volumeName1, volumeName2) // Act - run reconcile loop just once. // "volumesNeedUpdateFromNodeStatus" is not empty, so no unmount will be triggered. - reconciler.reconcileNew() + reconciler.reconcile() // Assert assert.True(t, reconciler.StatesHasBeenSynced()) diff --git a/pkg/kubelet/volumemanager/reconciler/reconstruct.go b/pkg/kubelet/volumemanager/reconciler/reconstruct.go index 9969577b3f9..e95796d7895 100644 --- a/pkg/kubelet/volumemanager/reconciler/reconstruct.go +++ b/pkg/kubelet/volumemanager/reconciler/reconstruct.go @@ -89,7 +89,7 @@ func (rc *reconciler) reconstructVolumes() { if len(reconstructedVolumes) > 0 { // Add the volumes to ASW - rc.updateStatesNew(reconstructedVolumes) + rc.updateStates(reconstructedVolumes) // The reconstructed volumes are mounted, hence a previous kubelet must have already put it into node.status.volumesInUse. // Remember to update DSW with this information. @@ -100,7 +100,7 @@ func (rc *reconciler) reconstructVolumes() { klog.V(2).InfoS("Volume reconstruction finished") } -func (rc *reconciler) updateStatesNew(reconstructedVolumes map[v1.UniqueVolumeName]*globalVolumeInfo) { +func (rc *reconciler) updateStates(reconstructedVolumes map[v1.UniqueVolumeName]*globalVolumeInfo) { for _, gvl := range reconstructedVolumes { err := rc.actualStateOfWorld.AddAttachUncertainReconstructedVolume( //TODO: the devicePath might not be correct for some volume plugins: see issue #54108 diff --git a/pkg/kubelet/volumemanager/reconciler/reconstruct_common.go b/pkg/kubelet/volumemanager/reconciler/reconstruct_common.go index 584ce9bff0d..cf23fb6b2de 100644 --- a/pkg/kubelet/volumemanager/reconciler/reconstruct_common.go +++ b/pkg/kubelet/volumemanager/reconciler/reconstruct_common.go @@ -385,8 +385,8 @@ func (rc *reconciler) reconstructVolume(volume podVolume) (rvolume *reconstructe volumeSpec: volumeSpec, // volume.volumeSpecName is actually InnerVolumeSpecName. It will not be used // for volume cleanup. - // in case pod is added back to desired state, outerVolumeSpecName will be updated from dsw information. - // See issue #103143 and its fix for details. + // in case reconciler calls mountOrAttachVolumes, outerVolumeSpecName will + // be updated from dsw information in ASW.MarkVolumeAsMounted(). outerVolumeSpecName: volume.volumeSpecName, pod: pod, deviceMounter: deviceMounter, diff --git a/pkg/kubelet/volumemanager/reconciler/reconstruct_test.go b/pkg/kubelet/volumemanager/reconciler/reconstruct_test.go index 3769c00a8f7..49e2df96fa2 100644 --- a/pkg/kubelet/volumemanager/reconciler/reconstruct_test.go +++ b/pkg/kubelet/volumemanager/reconciler/reconstruct_test.go @@ -344,7 +344,7 @@ func TestReconstructVolumesMount(t *testing.T) { rcInstance.volumesNeedUpdateFromNodeStatus = nil // Act 2 - reconcile once - rcInstance.reconcileNew() + rcInstance.reconcile() // Assert 2 // MountDevice was attempted