GC should retry on patch error

This commit is contained in:
Chao Xu
2017-06-05 16:22:46 -07:00
parent cc294cfb7e
commit a0a2e95fc5
2 changed files with 36 additions and 3 deletions

View File

@@ -399,7 +399,6 @@ func (gc *GarbageCollector) processDeletingDependentsItem(item *node) error {
// dependents are copies of pointers to the owner's dependents, they don't need to be locked.
func (gc *GarbageCollector) orphanDependents(owner objectReference, dependents []*node) error {
var failedDependents []objectReference
var errorsSlice []error
for _, dependent := range dependents {
// the dependent.identity.UID is used as precondition
@@ -408,10 +407,10 @@ func (gc *GarbageCollector) orphanDependents(owner objectReference, dependents [
// note that if the target ownerReference doesn't exist in the
// dependent, strategic merge patch will NOT return an error.
if err != nil && !errors.IsNotFound(err) {
errorsSlice = append(errorsSlice, fmt.Errorf("orphaning %s failed with %v", dependent.identity, err))
errorsSlice = append(errorsSlice, fmt.Errorf("orphaning %s failed, %v", dependent.identity, err))
}
}
if len(failedDependents) != 0 {
if len(errorsSlice) != 0 {
return fmt.Errorf("failed to orphan dependents of owner %s, got errors: %s", owner, utilerrors.NewAggregate(errorsSlice).Error())
}
glog.V(5).Infof("successfully updated all dependents of owner %s", owner)