diff --git a/pkg/kubelet/volumemanager/volume_manager.go b/pkg/kubelet/volumemanager/volume_manager.go index 0c5e34c5ab3..bda332e6116 100644 --- a/pkg/kubelet/volumemanager/volume_manager.go +++ b/pkg/kubelet/volumemanager/volume_manager.go @@ -516,6 +516,7 @@ func (vm *volumeManager) WaitForAllPodsUnmount(ctx context.Context, pods []*v1.P funcs := make([]func() error, 0, len(pods)) for _, pod := range pods { + pod := pod funcs = append(funcs, func() error { return vm.WaitForUnmount(ctx, pod) }) diff --git a/pkg/kubelet/volumemanager/volume_manager_test.go b/pkg/kubelet/volumemanager/volume_manager_test.go index f34b430dfb9..f4f3d04fa9d 100644 --- a/pkg/kubelet/volumemanager/volume_manager_test.go +++ b/pkg/kubelet/volumemanager/volume_manager_test.go @@ -743,6 +743,14 @@ func TestWaitForAllPodsUnmount(t *testing.T) { require.ErrorAs(t, err, &aggErr, "Expected error to be an Aggregate error") errs := aggErr.Errors() require.Len(t, errs, test.numPods, "Expected %d errors but got %d", test.numPods, len(errs)) + + // Verify that each pod's volume name appears in the error messages, + // which proves different pods are being processed + errString := err.Error() + for i := 0; i < test.numPods; i++ { + volumeName := fmt.Sprintf("fake/fake-device-%d", i) + require.Contains(t, errString, volumeName, "Expected error to contain volume name %s for pod-%d", volumeName, i) + } } else { require.NoError(t, err, "Expected no error") }