-
Notifications
You must be signed in to change notification settings - Fork 594
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(status) do not block config updates on failure
The initial status update loop setup function, ctrlutils.PullConfigUpdate, sets up a channel select that receives ConfigDone events. The config update loop sends to this channel, and blocks if nothing can receive from it. Previously, a failure to build the client configuration necessary to update status would exit PullConfigUpdate. Failure to retrieve the publish service address(es) would block PullConfigUpdate before it began receiving events, and environments that never receive addresses (LoadBalancer Services in clusters that cannot provision LoadBalancers) would block indefinitely. If either of these occurred, The config update loop would run once, block, and never run again. This change avoids this deadlock by having PullConfigUpdate always begin its channel receive. The ConfigDone receiver attempts to initialize configuration and status information if they are not marked ready, and marks them ready if it succeeds. If both are ready, it updates status. If one or the other is not ready, it logs a debug-level message and does nothing.
- Loading branch information
Travis Raines
committed
Nov 19, 2021
1 parent
dd683ed
commit 53682e2
Showing
2 changed files
with
101 additions
and
69 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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