reflector: fallback to the previous mode on any error

originally we honored only apierrors.IsInvalid
but decided to fallback on every error
because it is better to make progress than deadlocking

Kubernetes-commit: 4b3915017950a114124a88c5d308bd8bfb9ec48e
This commit is contained in:
Lukasz Szaszkiewicz
2023-10-04 08:17:10 +02:00
committed by Kubernetes Publisher
parent fbb1575728
commit 1e0855a7ac
2 changed files with 33 additions and 15 deletions

View File

@@ -334,12 +334,9 @@ func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error {
return nil
}
if err != nil {
if !apierrors.IsInvalid(err) {
return err
}
klog.Warning("The watch-list feature is not supported by the server, falling back to the previous LIST/WATCH semantics")
klog.Warningf("The watchlist request ended with an error, falling back to the standard LIST/WATCH semantics because making progress is better than deadlocking, err = %v", err)
fallbackToList = true
// Ensure that we won't accidentally pass some garbage down the watch.
// ensure that we won't accidentally pass some garbage down the watch.
w = nil
}
}