Skip to content
This repository has been archived by the owner on Oct 21, 2020. It is now read-only.

Fix for issue #94 in CSI external_provisioner #793

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions lib/controller/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -930,22 +930,23 @@ func (ctrl *ProvisionController) provisionClaimOperation(claim *v1.PersistentVol
strerr := fmt.Sprintf("Error creating provisioned PV object for claim %s: %v. Deleting the volume.", claimToClaimKey(claim), err)
glog.Error(strerr)
ctrl.eventRecorder.Event(claim, v1.EventTypeWarning, "ProvisioningFailed", strerr)

// To preserve the orignal error experienced during provisioning PV, introduce new error var.
var err2 error
for i := 0; i < ctrl.createProvisionedPVRetryCount; i++ {
if err = ctrl.provisioner.Delete(volume); err == nil {
if err2 = ctrl.provisioner.Delete(volume); err2 == nil {
// Delete succeeded
glog.V(4).Infof("provisionClaimOperation [%s]: cleaning volume %s succeeded", claimToClaimKey(claim), volume.Name)
break
}
// Delete failed, try again after a while.
glog.Infof("failed to delete volume %q: %v", volume.Name, err)
glog.Infof("failed to delete volume %q: %v", volume.Name, err2)
time.Sleep(ctrl.createProvisionedPVInterval)
}

if err != nil {
if err2 != nil {
// Delete failed several times. There is an orphaned volume and there
// is nothing we can do about it.
strerr := fmt.Sprintf("Error cleaning provisioned volume for claim %s: %v. Please delete manually.", claimToClaimKey(claim), err)
strerr := fmt.Sprintf("Error cleaning provisioned volume for claim %s: %v. Please delete manually.", claimToClaimKey(claim), err2)
glog.Error(strerr)
ctrl.eventRecorder.Event(claim, v1.EventTypeWarning, "ProvisioningCleanupFailed", strerr)
}
Expand All @@ -955,7 +956,7 @@ func (ctrl *ProvisionController) provisionClaimOperation(claim *v1.PersistentVol
ctrl.eventRecorder.Event(claim, v1.EventTypeNormal, "ProvisioningSucceeded", msg)
}

return nil
return err
}

// watchProvisioning returns a channel to which it sends the results of all
Expand Down