aboutsummaryrefslogtreecommitdiff
path: root/plugin/kubernetes/setup.go
diff options
context:
space:
mode:
authorGravatar Kevin Nisbet <kevin.nisbet+github@xybyte.com> 2018-10-22 09:30:08 -0400
committerGravatar Chris O'Haver <cohaver@infoblox.com> 2018-10-22 09:30:08 -0400
commit6539a10a62d9f6fa9119335928cf205aba93ec5d (patch)
tree02d8bd9080595387c03e4145a472f9fea9bc562f /plugin/kubernetes/setup.go
parentfdb31a27f3129fc806763f6367f46c5e990a0cde (diff)
downloadcoredns-6539a10a62d9f6fa9119335928cf205aba93ec5d.tar.gz
coredns-6539a10a62d9f6fa9119335928cf205aba93ec5d.tar.zst
coredns-6539a10a62d9f6fa9119335928cf205aba93ec5d.zip
Unblock startup if kubernetes API is unavailable (#2126)
Diffstat (limited to 'plugin/kubernetes/setup.go')
-rw-r--r--plugin/kubernetes/setup.go18
1 files changed, 12 insertions, 6 deletions
diff --git a/plugin/kubernetes/setup.go b/plugin/kubernetes/setup.go
index a2ad10fa2..a9afeebdc 100644
--- a/plugin/kubernetes/setup.go
+++ b/plugin/kubernetes/setup.go
@@ -77,13 +77,19 @@ func (k *Kubernetes) RegisterKubeCache(c *caddy.Controller) {
if k.APIProxy != nil {
k.APIProxy.Run()
}
- synced := false
- for synced == false {
- synced = k.APIConn.HasSynced()
- time.Sleep(100 * time.Millisecond)
- }
- return nil
+ timeout := time.After(5 * time.Second)
+ ticker := time.NewTicker(100 * time.Millisecond)
+ for {
+ select {
+ case <-ticker.C:
+ if k.APIConn.HasSynced() {
+ return nil
+ }
+ case <-timeout:
+ return nil
+ }
+ }
})
c.OnShutdown(func() error {