diff options
author | 2018-10-22 09:30:08 -0400 | |
---|---|---|
committer | 2018-10-22 09:30:08 -0400 | |
commit | 6539a10a62d9f6fa9119335928cf205aba93ec5d (patch) | |
tree | 02d8bd9080595387c03e4145a472f9fea9bc562f /plugin/kubernetes/setup.go | |
parent | fdb31a27f3129fc806763f6367f46c5e990a0cde (diff) | |
download | coredns-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.go | 18 |
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 { |