Merge pull request #79144 from tedyu/csi-x-recur

Remove recursion in csiAttacher#waitForVolumeAttachmentInternal
This commit is contained in:
Kubernetes Prow Robot 2019-08-03 00:05:51 -07:00 committed by GitHub
commit 9f6ebf0feb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 11 deletions

View File

@ -169,13 +169,9 @@ func (c *csiAttacher) waitForVolumeAttachmentInternal(volumeHandle, attachID str
if err != nil { if err != nil {
return "", fmt.Errorf("watch error:%v for volume %v", err, volumeHandle) return "", fmt.Errorf("watch error:%v for volume %v", err, volumeHandle)
} }
var watcherClosed bool
ch := watcher.ResultChan() ch := watcher.ResultChan()
defer func() { defer watcher.Stop()
if !watcherClosed {
watcher.Stop()
}
}()
for { for {
select { select {
@ -201,11 +197,7 @@ func (c *csiAttacher) waitForVolumeAttachmentInternal(volumeHandle, attachID str
return "", errors.New("volume attachment has been deleted") return "", errors.New("volume attachment has been deleted")
case watch.Error: case watch.Error:
// close the watcher to avoid keeping the watcher too log klog.Warningf("waitForVolumeAttachmentInternal received watch error: %v", event)
watcher.Stop()
watcherClosed = true
// start another cycle
return c.waitForVolumeAttachmentInternal(volumeHandle, attachID, timer, timeout)
} }
case <-timer.C: case <-timer.C:

View File

@ -221,6 +221,8 @@ func TestAttacherAttach(t *testing.T) {
status.AttachError = &storage.VolumeError{ status.AttachError = &storage.VolumeError{
Message: "attacher error", Message: "attacher error",
} }
errStatus := apierrs.NewInternalError(fmt.Errorf("we got an error")).Status()
fakeWatcher.Error(&errStatus)
} else { } else {
status.Attached = true status.Attached = true
} }