From ce3affcc6a16ef8e3a5aaebc689c035f28c9a6e8 Mon Sep 17 00:00:00 2001 From: gman Date: Mon, 25 Feb 2019 18:07:28 +0100 Subject: [PATCH] cephfs: DeleteVolume should assume the volume to be already deleted if metadata doesn't exist --- pkg/cephfs/controllerserver.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/pkg/cephfs/controllerserver.go b/pkg/cephfs/controllerserver.go index 235a99f3a..67a342040 100644 --- a/pkg/cephfs/controllerserver.go +++ b/pkg/cephfs/controllerserver.go @@ -97,8 +97,9 @@ func (cs *ControllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol }, nil } -// DeleteVolume deletes the volume in backend and removes the volume metadata -// from store +// DeleteVolume deletes the volume in backend +// and removes the volume metadata from store +// nolint: gocyclo func (cs *ControllerServer) DeleteVolume(ctx context.Context, req *csi.DeleteVolumeRequest) (*csi.DeleteVolumeResponse, error) { if err := cs.validateDeleteVolumeRequest(); err != nil { klog.Errorf("DeleteVolumeRequest validation failed: %v", err) @@ -108,11 +109,15 @@ func (cs *ControllerServer) DeleteVolume(ctx context.Context, req *csi.DeleteVol var ( volID = volumeID(req.GetVolumeId()) secrets = req.GetSecrets() - err error ) ce := &controllerCacheEntry{} - if err = cs.MetadataStore.Get(string(volID), ce); err != nil { + if err := cs.MetadataStore.Get(string(volID), ce); err != nil { + if err, ok := err.(*util.CacheEntryNotFound); ok { + klog.Infof("cephfs: metadata for volume %s not found, assuming the volume to be already deleted (%v)", volID, err) + return &csi.DeleteVolumeResponse{}, nil + } + return nil, status.Error(codes.Internal, err.Error()) }