From 1bb480984114841af4e11f880b8afd5071bef52b Mon Sep 17 00:00:00 2001 From: saadali Date: Wed, 7 Oct 2015 14:07:33 -0700 Subject: [PATCH] Prevent GCE PD attach code from succeding if disk failed to attach. --- pkg/volume/gce_pd/gce_util.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkg/volume/gce_pd/gce_util.go b/pkg/volume/gce_pd/gce_util.go index 09b3e7084a..bb3a102094 100644 --- a/pkg/volume/gce_pd/gce_util.go +++ b/pkg/volume/gce_pd/gce_util.go @@ -125,6 +125,9 @@ func attachDiskAndVerify(b *gcePersistentDiskBuilder, sdBeforeSet sets.String) ( devicePaths := getDiskByIdPaths(b.gcePersistentDisk) var gceCloud *gce_cloud.GCECloud for numRetries := 0; numRetries < maxRetries; numRetries++ { + // Block execution until any pending detach goroutines for this pd have completed + detachCleanupManager.Send(b.pdName, true) + var err error if gceCloud == nil { gceCloud, err = getCloudProvider() @@ -141,9 +144,10 @@ func attachDiskAndVerify(b *gcePersistentDiskBuilder, sdBeforeSet sets.String) ( } if err := gceCloud.AttachDisk(b.pdName, b.readOnly); err != nil { - // Retry on error. See issue #11321. Continue and verify if disk is attached, because a - // previous attach operation may still succeed. + // Retry on error. See issue #11321. glog.Errorf("Error attaching PD %q: %v", b.pdName, err) + time.Sleep(errorSleepDuration) + continue } for numChecks := 0; numChecks < maxChecks; numChecks++ {