From 308c0ecde9f76a2f5bf17c7f41147ecaf379e5f1 Mon Sep 17 00:00:00 2001 From: Jan Safranek Date: Tue, 14 Feb 2017 15:16:26 +0100 Subject: [PATCH] pv_controller: Do not report exponential backoff as error. It's not an error when recycle/delete/provision operation cannot be started because it has failed recently. It will be restarted automatically when backoff expires. --- pkg/controller/volume/persistentvolume/BUILD | 1 + pkg/controller/volume/persistentvolume/pv_controller.go | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pkg/controller/volume/persistentvolume/BUILD b/pkg/controller/volume/persistentvolume/BUILD index 799a94f0487..1ca472ddbef 100644 --- a/pkg/controller/volume/persistentvolume/BUILD +++ b/pkg/controller/volume/persistentvolume/BUILD @@ -26,6 +26,7 @@ go_library( "//pkg/cloudprovider:go_default_library", "//pkg/controller:go_default_library", "//pkg/util/goroutinemap:go_default_library", + "//pkg/util/goroutinemap/exponentialbackoff:go_default_library", "//pkg/util/io:go_default_library", "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", diff --git a/pkg/controller/volume/persistentvolume/pv_controller.go b/pkg/controller/volume/persistentvolume/pv_controller.go index 81f5fa23248..5b997fcc476 100644 --- a/pkg/controller/volume/persistentvolume/pv_controller.go +++ b/pkg/controller/volume/persistentvolume/pv_controller.go @@ -33,6 +33,7 @@ import ( "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" "k8s.io/kubernetes/pkg/cloudprovider" "k8s.io/kubernetes/pkg/util/goroutinemap" + "k8s.io/kubernetes/pkg/util/goroutinemap/exponentialbackoff" vol "k8s.io/kubernetes/pkg/volume" "github.com/golang/glog" @@ -1427,9 +1428,12 @@ func (ctrl *PersistentVolumeController) scheduleOperation(operationName string, err := ctrl.runningOperations.Run(operationName, operation) if err != nil { - if goroutinemap.IsAlreadyExists(err) { + switch { + case goroutinemap.IsAlreadyExists(err): glog.V(4).Infof("operation %q is already running, skipping", operationName) - } else { + case exponentialbackoff.IsExponentialBackoff(err): + glog.V(4).Infof("operation %q postponed due to exponential backoff", operationName) + default: glog.Errorf("error scheduling operation %q: %v", operationName, err) } }