From bad8a51b9aa055a3af0861952d1cb5c8a686ee96 Mon Sep 17 00:00:00 2001 From: Hemant Kumar Date: Thu, 20 Aug 2020 15:25:58 -0400 Subject: [PATCH] Read PV object from apiserver to prevent flake --- pkg/controller/volume/expand/BUILD | 1 + pkg/controller/volume/expand/expand_controller.go | 10 ++++++---- pkg/controller/volume/expand/expand_controller_test.go | 7 ++++++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/pkg/controller/volume/expand/BUILD b/pkg/controller/volume/expand/BUILD index cd418bba620..798bdceb0bd 100644 --- a/pkg/controller/volume/expand/BUILD +++ b/pkg/controller/volume/expand/BUILD @@ -18,6 +18,7 @@ go_library( "//staging/src/k8s.io/api/authentication/v1:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", diff --git a/pkg/controller/volume/expand/expand_controller.go b/pkg/controller/volume/expand/expand_controller.go index c81b3fdc89e..7d4e833a558 100644 --- a/pkg/controller/volume/expand/expand_controller.go +++ b/pkg/controller/volume/expand/expand_controller.go @@ -17,6 +17,7 @@ limitations under the License. package expand import ( + "context" "fmt" "net" "time" @@ -28,6 +29,7 @@ import ( authenticationv1 "k8s.io/api/authentication/v1" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/wait" @@ -224,7 +226,7 @@ func (expc *expandController) syncHandler(key string) error { return err } - pv, err := getPersistentVolume(pvc, expc.pvLister) + pv, err := expc.getPersistentVolume(pvc) if err != nil { klog.V(5).Infof("Error getting Persistent Volume for PVC %q (uid: %q) from informer : %v", util.GetPersistentVolumeClaimQualifiedName(pvc), pvc.UID, err) return err @@ -335,12 +337,12 @@ func (expc *expandController) runWorker() { } } -func getPersistentVolume(pvc *v1.PersistentVolumeClaim, pvLister corelisters.PersistentVolumeLister) (*v1.PersistentVolume, error) { +func (expc *expandController) getPersistentVolume(pvc *v1.PersistentVolumeClaim) (*v1.PersistentVolume, error) { volumeName := pvc.Spec.VolumeName - pv, err := pvLister.Get(volumeName) + pv, err := expc.kubeClient.CoreV1().PersistentVolumes().Get(context.TODO(), volumeName, metav1.GetOptions{}) if err != nil { - return nil, fmt.Errorf("failed to find PV %q in PV informer cache with error : %v", volumeName, err) + return nil, fmt.Errorf("failed to get PV %q: %v", volumeName, err) } return pv.DeepCopy(), nil diff --git a/pkg/controller/volume/expand/expand_controller_test.go b/pkg/controller/volume/expand/expand_controller_test.go index 1ddc70a1592..e0d0a52c7c4 100644 --- a/pkg/controller/volume/expand/expand_controller_test.go +++ b/pkg/controller/volume/expand/expand_controller_test.go @@ -23,7 +23,7 @@ import ( "regexp" "testing" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" storagev1 "k8s.io/api/storage/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -147,6 +147,11 @@ func TestSyncHandler(t *testing.T) { return nil, nil }) + if test.pv != nil { + fakeKubeClient.AddReactor("get", "persistentvolumes", func(action coretesting.Action) (bool, runtime.Object, error) { + return true, test.pv, nil + }) + } fakeKubeClient.AddReactor("patch", "persistentvolumeclaims", func(action coretesting.Action) (bool, runtime.Object, error) { if action.GetSubresource() == "status" { patchActionaction, _ := action.(coretesting.PatchAction)