From 0655370ea236af1052782a9bf5ed0d75f969bb22 Mon Sep 17 00:00:00 2001 From: Brendan Burns Date: Wed, 2 Jul 2014 22:46:03 -0700 Subject: [PATCH] Fix an error in the async-path that led to dropping pods. --- pkg/kubelet/kubelet.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index 71a99a88868..14d64c99991 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -661,6 +661,7 @@ func (kl *Kubelet) syncManifest(manifest *api.ContainerManifest, keepChannel cha } keepChannel <- netID for _, container := range manifest.Containers { + glog.Infof("Syncing container: %v", container) containerID, err := kl.getContainerID(manifest, &container) if err != nil { glog.Errorf("Error finding container: %v skipping manifest %s container %s.", err, manifest.ID, container.Name) @@ -696,16 +697,18 @@ func (kl *Kubelet) SyncManifests(config []api.ContainerManifest) error { waitGroup := sync.WaitGroup{} // Check for any containers that need starting - for _, manifest := range config { + for ix := range config { waitGroup.Add(1) - go func() { + go func(index int) { defer util.HandleCrash() defer waitGroup.Done() - err := kl.syncManifest(&manifest, keepChannel) + // necessary to dereference by index here b/c otherwise the shared value + // in the for each is re-used. + err := kl.syncManifest(&config[index], keepChannel) if err != nil { glog.Errorf("Error syncing manifest: %v skipping.", err) } - }() + }(ix) } go func() { for id := range keepChannel {