From 0ab9f6fe5567c22eab8f255684e8d3a85a5774ec Mon Sep 17 00:00:00 2001 From: NickrenREN Date: Wed, 8 Mar 2017 17:22:32 +0800 Subject: [PATCH] fix createProvisionedPV result err judgenment bug When ctrl.kubeClient.Core().PersistentVolumes().Create(volume) returns no err, but storeVolumeUpdate() failed, we save PV sucessfully ,but here err is not nil, we should not run the codes next in block if err != nil {} same in the deletion retries below --- .../volume/persistentvolume/pv_controller.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/pkg/controller/volume/persistentvolume/pv_controller.go b/pkg/controller/volume/persistentvolume/pv_controller.go index b036d02a43a..d40b879a423 100644 --- a/pkg/controller/volume/persistentvolume/pv_controller.go +++ b/pkg/controller/volume/persistentvolume/pv_controller.go @@ -1341,10 +1341,10 @@ func (ctrl *PersistentVolumeController) provisionClaimOperation(claimObj interfa // Save succeeded. glog.V(3).Infof("volume %q for claim %q saved", volume.Name, claimToClaimKey(claim)) - _, err = ctrl.storeVolumeUpdate(newVol) - if err != nil { + _, updateErr := ctrl.storeVolumeUpdate(newVol) + if updateErr != nil { // We will get an "volume added" event soon, this is not a big error - glog.V(4).Infof("provisionClaimOperation [%s]: cannot update internal cache: %v", volume.Name, err) + glog.V(4).Infof("provisionClaimOperation [%s]: cannot update internal cache: %v", volume.Name, updateErr) } break } @@ -1362,9 +1362,11 @@ func (ctrl *PersistentVolumeController) provisionClaimOperation(claimObj interfa glog.V(3).Info(strerr) ctrl.eventRecorder.Event(claim, v1.EventTypeWarning, "ProvisioningFailed", strerr) + var deleteErr error + var deleted bool for i := 0; i < ctrl.createProvisionedPVRetryCount; i++ { - deleted, err := ctrl.doDeleteVolume(volume) - if err == nil && deleted { + deleted, deleteErr = ctrl.doDeleteVolume(volume) + if deleteErr == nil && deleted { // Delete succeeded glog.V(4).Infof("provisionClaimOperation [%s]: cleaning volume %s succeeded", claimToClaimKey(claim), volume.Name) break @@ -1377,14 +1379,14 @@ func (ctrl *PersistentVolumeController) provisionClaimOperation(claimObj interfa break } // Delete failed, try again after a while. - glog.V(3).Infof("failed to delete volume %q: %v", volume.Name, err) + glog.V(3).Infof("failed to delete volume %q: %v", volume.Name, deleteErr) time.Sleep(ctrl.createProvisionedPVInterval) } - if err != nil { + if deleteErr != 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), deleteErr) glog.V(2).Info(strerr) ctrl.eventRecorder.Event(claim, v1.EventTypeWarning, "ProvisioningCleanupFailed", strerr) }