projectquota: return errors from StartWatcher instead of klog.Fatalln#426
Open
tamalsaha wants to merge 1 commit into
Open
projectquota: return errors from StartWatcher instead of klog.Fatalln#426tamalsaha wants to merge 1 commit into
tamalsaha wants to merge 1 commit into
Conversation
ProjectQuotaReconciler.StartWatcher called klog.Fatalln on a nil reconciler, an unknown resource Kind, or a failed Watch. Because StartWatcher runs from the resource-discovery poller (graph.PollNewResourceTypes), any of these conditions terminated the whole kube-ui-server process rather than failing the single watch. Make StartWatcher return an error and have the poller log it and continue, consistent with the rest of the resilient discovery loop. No condition in this path should bring down the aggregated apiserver. Signed-off-by: Tamal Saha <tamal@appscode.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
ProjectQuotaReconciler.StartWatchercalledklog.Fatallnin three places — a nil reconciler, an unknown resourceKind, and a failedWatch:StartWatcheris invoked at runtime from the resource-discovery poller (graph.PollNewResourceTypes). Aklog.Fatallnthere callsos.Exit, so any one of these conditions on any single discovered resource type takes down the entirekube-ui-serverprocess instead of failing just that watch.Fix
StartWatchernow returns anerrorfor each of the three conditions (with the offending resource/GVK included in the message).klog.ErrorSand continues, consistent with the rest of the resilient discovery loop (cf. Isolate per-connection failures in graph reconciler #422 "Isolate per-connection failures").No behavior in this path should be able to crash the aggregated apiserver.
Testing
go build ./...passes.go vetandgofmtclean on the changed files.grep klog.Fataloverpkg/returns nothing.