Commit 8e48221c authored by Yu-Ju Hong's avatar Yu-Ju Hong

kubelet: mark source ready after updating the cache

This ensures that cleanup routines don't start until the cache content is up-to-date.
parent cdfd46cc
...@@ -2175,7 +2175,6 @@ func (kl *Kubelet) syncLoopIteration(configCh <-chan kubetypes.PodUpdate, handle ...@@ -2175,7 +2175,6 @@ func (kl *Kubelet) syncLoopIteration(configCh <-chan kubetypes.PodUpdate, handle
glog.Errorf("Update channel is closed. Exiting the sync loop.") glog.Errorf("Update channel is closed. Exiting the sync loop.")
return false return false
} }
kl.sourcesReady.AddSource(u.Source)
switch u.Op { switch u.Op {
case kubetypes.ADD: case kubetypes.ADD:
...@@ -2202,6 +2201,14 @@ func (kl *Kubelet) syncLoopIteration(configCh <-chan kubetypes.PodUpdate, handle ...@@ -2202,6 +2201,14 @@ func (kl *Kubelet) syncLoopIteration(configCh <-chan kubetypes.PodUpdate, handle
// TODO: Do we want to support this? // TODO: Do we want to support this?
glog.Errorf("Kubelet does not support snapshot update") glog.Errorf("Kubelet does not support snapshot update")
} }
// Mark the source ready after receiving at least one update from the
// source. Once all the sources are marked ready, various cleanup
// routines will start reclaiming resources. It is important that this
// takes place only after kubelet calls the update handler to process
// the update to ensure the internal pod cache is up-to-date.
kl.sourcesReady.AddSource(u.Source)
case e := <-plegCh: case e := <-plegCh:
if isSyncPodWorthy(e) { if isSyncPodWorthy(e) {
// PLEG event for a pod; sync it. // PLEG event for a pod; sync it.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment