Change:
Which jobs are failing: pull-kubernetes-integration Which test(s) are failing: TestVolumeProvision Example: Since when has it been failing: Not sure, and aren't displaying any results /sig storage
Issues go stale after 90d of inactivity. Mark the issue as fresh with . Stale issues rot after an additional 30d of inactivity and eventually close. If this issue is safe to close now please do so with . Send feedback to sig-testing, kubernetes/test-infra and/or . /lifecycle stale
Stale issues rot after 30d of inactivity. Mark the issue as fresh with . Rotten issues close after an additional 30d of inactivity. If this issue is safe to close now please do so with . Send feedback to sig-testing, kubernetes/test-infra and/or . /lifecycle rotten
/assign /remove-lifecycle rotten Still seeing this, although not very frequently. Could indicate a race.
Issues go stale after 90d of inactivity. Mark the issue as fresh with . Stale issues rot after an additional 30d of inactivity and eventually close. If this issue is safe to close now please do so with . Send feedback to sig-testing, kubernetes/test-infra and/or . /lifecycle stale
Stale issues rot after 30d of inactivity. Mark the issue as fresh with . Rotten issues close after an additional 30d of inactivity. If this issue is safe to close now please do so with . Send feedback to sig-testing, kubernetes/test-infra and/or . /lifecycle rotten
/remove-lifecycle rotten
latest failures:
take as an example the test fails b/c is set to PVC , which is not expected. our volume binder tries to dynamically provision it:
as for the test fails for the same reason when the scheduler volume binder tries to find volumes for PVC , its corresponding volume is not synced to volume binder or synced version is not in Available state so the volume binder will try to dynamically provision it too
I think the root cause is that the scheduler fails to find matching PVs in PV Assume Cache for the PVC because the PV in the Assume Cache is not in Available state or does not exist due to event delay. We should wait for the PV/PVC Assume Cache to be up to date before scheduling the pod. However, it's not possible in integration tests. I think we can wait for the PV to be available or bound. This should reduce failures.

Discussion:
} run := func(t *testing.T, test testcaseType) { <del> // Create StorageClasses </del> <ins> t.Log("Creating StorageClass") </ins> suffix := rand.String(4) classes := map[string]*storagev1.StorageClass{} classes[classImmediate] = makeDynamicProvisionerStorageClass(fmt.Sprintf("immediate-%v", suffix), &modeImmediate, nil)

t.Fatalf("Failed to create StorageClass %q: %v", sc.Name, err) } } <del> // Create PVs </del> <ins> t.Log("Creating PVs") </ins> for _, pvConfig := range test.pvs { pv := makePV(pvConfig.name, classes[pvConfig.scName].Name, pvConfig.preboundPVC, config.ns, pvConfig.node) if _, err := config.client.CoreV1().PersistentVolumes().Create(context.TODO(), pv, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create PersistentVolume %q: %v", pv.Name, err) } <ins> if err := waitForPVPhase(config.client, pvConfig.name, v1.VolumeAvailable); err != nil { t.Fatalf("PersistentVolume %q failed to become available: %v", pvConfig.name, err) } </ins> } <del> // Create PVCs </del> <ins> t.Log("Creating PVCs") </ins> for _, pvcConfig := range test.boundPvcs { pvc := makePVC(pvcConfig.name, config.ns, &classes[pvcConfig.scName].Name, pvcConfig.preboundPV) if _, err := config.client.CoreV1().PersistentVolumeClaims(config.ns).Create(context.TODO(), pvc, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create PersistentVolumeClaim %q: %v", pvc.Name, err) } } <ins> t.Log("Creating unbound PVCs") </ins> for _, pvcConfig := range test.unboundPvcs { pvc := makePVC(pvcConfig.name, config.ns, &classes[pvcConfig.scName].Name, pvcConfig.preboundPV) if _, err := config.client.CoreV1().PersistentVolumeClaims(config.ns).Create(context.TODO(), pvc, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create PersistentVolumeClaim %q: %v", pvc.Name, err) } } <ins> t.Log("Creating unbound PVCs which should be dynamically provisioned") </ins> for _, pvcConfig := range test.provisionedPvcs { pvc := makePVC(pvcConfig.name, config.ns, &classes[pvcConfig.scName].Name, pvcConfig.preboundPV) if _, err := config.client.CoreV1().PersistentVolumeClaims(config.ns).Create(context.TODO(), pvc, metav1.CreateOptions{}); err != nil {

} } <del> // Create Pod </del> <ins> t.Log("Creating the pod to schedule") </ins> if _, err := config.client.CoreV1().Pods(config.ns).Create(context.TODO(), test.pod, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pod %q: %v", test.pod.Name, err) }

} } <del> // Validate PVC/PV binding </del> <ins> t.Log("Validating PVC/PV binding") </ins> for _, pvc := range test.boundPvcs { validatePVCPhase(t, config.client, pvc.name, config.ns, v1.ClaimBound, false) }

} // Force delete objects, but they still may not be immediately removed <ins> t.Log("Deleting test objects") </ins> deleteTestObjects(config.client, config.ns, deleteOption) }