mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-30 15:05:27 +00:00
Make sure PodExistsInVolume does not uses uncertain volumes
This commit is contained in:
parent
34a6007dfe
commit
50dbcb3e00
@ -127,7 +127,7 @@ type ActualStateOfWorld interface {
|
||||
// actual state of the world.
|
||||
GetMountedVolumes() []MountedVolume
|
||||
|
||||
// GetAllMountedVolumes returns list of all mounted volumes including
|
||||
// GetAllMountedVolumes returns list of all possibly mounted volumes including
|
||||
// those that are in VolumeMounted state and VolumeMountUncertain state.
|
||||
GetAllMountedVolumes() []MountedVolume
|
||||
|
||||
@ -635,6 +635,10 @@ func (asw *actualStateOfWorld) PodExistsInVolume(
|
||||
|
||||
podObj, podExists := volumeObj.mountedPods[podName]
|
||||
if podExists {
|
||||
// if volume mount was uncertain we should keep trying to mount the volume
|
||||
if podObj.volumeMountStateForPod == operationexecutor.VolumeMountUncertain {
|
||||
return false, volumeObj.devicePath, nil
|
||||
}
|
||||
if podObj.remountRequired {
|
||||
return true, volumeObj.devicePath, newRemountRequiredError(volumeObj.volumeName, podObj.podName)
|
||||
}
|
||||
|
@ -592,7 +592,7 @@ func Test_MarkDeviceAsMounted_Positive_NewVolume(t *testing.T) {
|
||||
verifyVolumeExistsInGloballyMountedVolumes(t, generatedVolumeName, asw)
|
||||
}
|
||||
|
||||
func TestGetMountedVolumesForPod(t *testing.T) {
|
||||
func TestUncertainVolumeMounts(t *testing.T) {
|
||||
// Arrange
|
||||
volumePluginMgr, plugin := volumetesting.GetTestVolumePluginMgr(t)
|
||||
asw := NewActualStateOfWorld("mynode" /* nodeName */, volumePluginMgr)
|
||||
@ -655,6 +655,11 @@ func TestGetMountedVolumesForPod(t *testing.T) {
|
||||
if volumeFound {
|
||||
t.Fatalf("expected volume %s to be not found in asw", volumeSpec1.Name())
|
||||
}
|
||||
|
||||
volExists, _, _ := asw.PodExistsInVolume(podName1, generatedVolumeName1)
|
||||
if volExists {
|
||||
t.Fatalf("expected volume %s to not exist in asw", generatedVolumeName1)
|
||||
}
|
||||
}
|
||||
|
||||
func verifyVolumeExistsInGloballyMountedVolumes(
|
||||
|
@ -639,7 +639,7 @@ func isFinalError(err error) bool {
|
||||
case codes.Canceled, // gRPC: Client Application cancelled the request
|
||||
codes.DeadlineExceeded, // gRPC: Timeout
|
||||
codes.Unavailable, // gRPC: Server shutting down, TCP connection broken - previous CreateVolume() may be still in progress.
|
||||
codes.ResourceExhausted, // gRPC: Server temporarily out of resources - previous CreateVolume() may be still in progress.
|
||||
codes.ResourceExhausted, // gRPC: Server temporarily out of resources - previous Publish operation may be still in progress.
|
||||
codes.Aborted: // CSI: Operation pending for volume
|
||||
return false
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user