From 9d7faf850f73a80794d53aa253da9f48f084bd8a Mon Sep 17 00:00:00 2001 From: Niels de Vos Date: Fri, 29 Apr 2022 14:58:28 +0200 Subject: [PATCH] nfs: delete the CephFS volume when the export is already removed In case the NFS-export has already been removed from the NFS-server, but the CSI Controller was restarted, a retry to remove the NFS-volume will fail with an error like: > GRPC error: ....: response status not empty: "Export does not exist" When this error is reported, assume the NFS-export was already removed from the NFS-server configuration, and continue with deleting the backend volume. Signed-off-by: Niels de Vos --- internal/nfs/controller/controllerserver.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/internal/nfs/controller/controllerserver.go b/internal/nfs/controller/controllerserver.go index 75a0c515c..31e75abcd 100644 --- a/internal/nfs/controller/controllerserver.go +++ b/internal/nfs/controller/controllerserver.go @@ -18,6 +18,7 @@ package controller import ( "context" + "strings" "github.com/ceph/ceph-csi/internal/cephfs" "github.com/ceph/ceph-csi/internal/cephfs/store" @@ -140,8 +141,8 @@ func (cs *Server) DeleteVolume( defer nfsVolume.Destroy() err = nfsVolume.DeleteExport() - // TODO: if the export does not exist, but the backend does, delete the backend - if err != nil { + // if the export does not exist, continue with deleting the backend volume + if err != nil && !strings.Contains(err.Error(), "Export does not exist") { return nil, status.Errorf(codes.InvalidArgument, "failed to delete export: %v", err) }