Commit 53859b03 authored by Fabio Yeon's avatar Fabio Yeon

Merge pull request #22067 from derekwaynecarr/ns_controller_errors

e2e flake fix: Namespace controller error handling improvements
parents 9eed3200 a301a256
......@@ -112,11 +112,16 @@ func (nm *NamespaceController) worker() {
if err := nm.syncNamespaceFromKey(key.(string)); err != nil {
if estimate, ok := err.(*contentRemainingError); ok {
go func() {
defer utilruntime.HandleCrash()
t := estimate.Estimate/2 + 1
glog.V(4).Infof("Content remaining in namespace %s, waiting %d seconds", key, t)
time.Sleep(time.Duration(t) * time.Second)
nm.queue.Add(key)
}()
} else {
// rather than wait for a full resync, re-add the namespace to the queue to be processed
nm.queue.Add(key)
utilruntime.HandleError(err)
}
}
}()
......
......@@ -244,6 +244,12 @@ func syncNamespace(kubeClient clientset.Interface, versions *unversioned.APIVers
// we have removed content, so mark it finalized by us
result, err := retryOnConflictError(kubeClient, namespace, finalizeNamespaceFunc)
if err != nil {
// in normal practice, this should not be possible, but if a deployment is running
// two controllers to do namespace deletion that share a common finalizer token it's
// possible that a not found could occur since the other controller would have finished the delete.
if errors.IsNotFound(err) {
return nil
}
return err
}
......
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