Merge pull request #31641 from mwielgus/updater-on-failure
Automatic merge from submit-queue OnError callback function for federated updater The handler can be useful for precise logging and events recording. Update returns just a single, first received error. cc: @quinton-hoole @wojtek-t @kubernetes/sig-cluster-federation
This commit is contained in:
		@@ -47,6 +47,8 @@ type FederatedUpdater interface {
 | 
			
		||||
	// stopped when it is reached. However the function will return after the timeout
 | 
			
		||||
	// with a non-nil error.
 | 
			
		||||
	Update([]FederatedOperation, time.Duration) error
 | 
			
		||||
 | 
			
		||||
	UpdateWithOnError([]FederatedOperation, time.Duration, func(FederatedOperation, error)) error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// A function that executes some operation using the passed client and object.
 | 
			
		||||
@@ -70,6 +72,10 @@ func NewFederatedUpdater(federation FederationView, add, update, del FederatedOp
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (fu *federatedUpdaterImpl) Update(ops []FederatedOperation, timeout time.Duration) error {
 | 
			
		||||
	return fu.UpdateWithOnError(ops, timeout, nil)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (fu *federatedUpdaterImpl) UpdateWithOnError(ops []FederatedOperation, timeout time.Duration, onError func(FederatedOperation, error)) error {
 | 
			
		||||
	done := make(chan error, len(ops))
 | 
			
		||||
	for _, op := range ops {
 | 
			
		||||
		go func(op FederatedOperation) {
 | 
			
		||||
@@ -90,6 +96,9 @@ func (fu *federatedUpdaterImpl) Update(ops []FederatedOperation, timeout time.Du
 | 
			
		||||
			case OperationTypeDelete:
 | 
			
		||||
				err = fu.deleteFunction(clientset, op.Obj)
 | 
			
		||||
			}
 | 
			
		||||
			if err != nil && onError != nil {
 | 
			
		||||
				onError(op, err)
 | 
			
		||||
			}
 | 
			
		||||
			done <- err
 | 
			
		||||
		}(op)
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user