diff --git a/pkg/controller/namespace/deletion/BUILD b/pkg/controller/namespace/deletion/BUILD index c4405ee78fa..af0663379f3 100644 --- a/pkg/controller/namespace/deletion/BUILD +++ b/pkg/controller/namespace/deletion/BUILD @@ -20,6 +20,7 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/k8s.io/client-go/discovery:go_default_library", "//vendor/k8s.io/client-go/dynamic:go_default_library", diff --git a/pkg/controller/namespace/deletion/namespaced_resources_deleter.go b/pkg/controller/namespace/deletion/namespaced_resources_deleter.go index 2efad6a51e2..7920173b43b 100644 --- a/pkg/controller/namespace/deletion/namespaced_resources_deleter.go +++ b/pkg/controller/namespace/deletion/namespaced_resources_deleter.go @@ -28,11 +28,11 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime/schema" + utilerrors "k8s.io/apimachinery/pkg/util/errors" "k8s.io/apimachinery/pkg/util/sets" - "k8s.io/kubernetes/pkg/api/v1" - // "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" "k8s.io/client-go/discovery" "k8s.io/client-go/dynamic" + "k8s.io/kubernetes/pkg/api/v1" v1clientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1" ) @@ -504,15 +504,21 @@ func (d *namespacedResourcesDeleter) deleteAllContent( if err != nil { return estimate, err } + var errs []error for gvr := range groupVersionResources { gvrEstimate, err := d.deleteAllContentForGroupVersionResource(gvr, namespace, namespaceDeletedAt) if err != nil { - return estimate, err + // If there is an error, hold on to it but proceed with all the remaining + // groupVersionResources. + errs = append(errs, err) } if gvrEstimate > estimate { estimate = gvrEstimate } } + if len(errs) > 0 { + return estimate, utilerrors.NewAggregate(errs) + } glog.V(4).Infof("namespace controller - deleteAllContent - namespace: %s, estimate: %v", namespace, estimate) return estimate, nil }