Commit e8e87cb1 authored by Andy Goldstein's avatar Andy Goldstein

NS controller: don't stop deleting GVRs on error

If the namespace controller encounters an error trying to delete a single GroupVersionResource, add the error to an aggregated list of errors and continue attempting to delete all the GroupVersionResources instead of stopping at the first error. Return the aggregated error list (if any) when done. This allows us to delete as much of the content in the namespace as we can in each pass.
parent a1c2db2f
...@@ -20,6 +20,7 @@ go_library( ...@@ -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:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured: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/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/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/client-go/discovery:go_default_library", "//vendor/k8s.io/client-go/discovery:go_default_library",
"//vendor/k8s.io/client-go/dynamic:go_default_library", "//vendor/k8s.io/client-go/dynamic:go_default_library",
......
...@@ -28,11 +28,11 @@ import ( ...@@ -28,11 +28,11 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
utilerrors "k8s.io/apimachinery/pkg/util/errors"
"k8s.io/apimachinery/pkg/util/sets" "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/discovery"
"k8s.io/client-go/dynamic" "k8s.io/client-go/dynamic"
"k8s.io/kubernetes/pkg/api/v1"
v1clientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1" v1clientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/core/v1"
) )
...@@ -504,15 +504,21 @@ func (d *namespacedResourcesDeleter) deleteAllContent( ...@@ -504,15 +504,21 @@ func (d *namespacedResourcesDeleter) deleteAllContent(
if err != nil { if err != nil {
return estimate, err return estimate, err
} }
var errs []error
for gvr := range groupVersionResources { for gvr := range groupVersionResources {
gvrEstimate, err := d.deleteAllContentForGroupVersionResource(gvr, namespace, namespaceDeletedAt) gvrEstimate, err := d.deleteAllContentForGroupVersionResource(gvr, namespace, namespaceDeletedAt)
if err != nil { 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 { if gvrEstimate > estimate {
estimate = gvrEstimate estimate = gvrEstimate
} }
} }
if len(errs) > 0 {
return estimate, utilerrors.NewAggregate(errs)
}
glog.V(4).Infof("namespace controller - deleteAllContent - namespace: %s, estimate: %v", namespace, estimate) glog.V(4).Infof("namespace controller - deleteAllContent - namespace: %s, estimate: %v", namespace, estimate)
return estimate, nil return estimate, nil
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment