mirror of https://github.com/k3s-io/k3s
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-federationpull/6/head
commit
228ba405c5
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue