Prevent GCE PD attach code from succeding if disk failed to attach.

This commit is contained in:
saadali 2015-10-07 14:07:33 -07:00
parent 3902f76512
commit 1bb4809841

View File

@ -125,6 +125,9 @@ func attachDiskAndVerify(b *gcePersistentDiskBuilder, sdBeforeSet sets.String) (
devicePaths := getDiskByIdPaths(b.gcePersistentDisk) devicePaths := getDiskByIdPaths(b.gcePersistentDisk)
var gceCloud *gce_cloud.GCECloud var gceCloud *gce_cloud.GCECloud
for numRetries := 0; numRetries < maxRetries; numRetries++ { 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 var err error
if gceCloud == nil { if gceCloud == nil {
gceCloud, err = getCloudProvider() gceCloud, err = getCloudProvider()
@ -141,9 +144,10 @@ func attachDiskAndVerify(b *gcePersistentDiskBuilder, sdBeforeSet sets.String) (
} }
if err := gceCloud.AttachDisk(b.pdName, b.readOnly); err != nil { 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 // Retry on error. See issue #11321.
// previous attach operation may still succeed.
glog.Errorf("Error attaching PD %q: %v", b.pdName, err) glog.Errorf("Error attaching PD %q: %v", b.pdName, err)
time.Sleep(errorSleepDuration)
continue
} }
for numChecks := 0; numChecks < maxChecks; numChecks++ { for numChecks := 0; numChecks < maxChecks; numChecks++ {