From 976a2063f12c3d9ecdf509236c2ed20d0c531c74 Mon Sep 17 00:00:00 2001 From: Derek Su Date: Wed, 23 Nov 2022 15:10:40 +0800 Subject: [PATCH] local volume: remove unix-domain-socket file after deleting replica process Longhorn 3957 Signed-off-by: Derek Su --- controller/replica_controller.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/controller/replica_controller.go b/controller/replica_controller.go index 662d0764b3..2bdfd46f69 100644 --- a/controller/replica_controller.go +++ b/controller/replica_controller.go @@ -3,6 +3,7 @@ package controller import ( "context" "fmt" + "os" "path/filepath" "reflect" "strings" @@ -556,10 +557,15 @@ func (rc *ReplicaController) DeleteInstance(obj interface{}) error { return err } defer c.Close() + if err := c.ProcessDelete(r.Name); err != nil && !types.ErrorIsNotFound(err) { return err } + if err := deleteUnixSocketFile(r.Spec.VolumeName); err != nil && !types.ErrorIsNotFound(err) { + log.Warnf("Failed to delete unix-domain-socket file for volume %v since %v", r.Spec.VolumeName, err) + } + // Directly remove the instance from the map. Best effort. if im.Status.APIVersion == engineapi.IncompatibleInstanceManagerAPIVersion { delete(im.Status.Instances, r.Name) @@ -571,6 +577,10 @@ func (rc *ReplicaController) DeleteInstance(obj interface{}) error { return nil } +func deleteUnixSocketFile(volumeName string) error { + return os.RemoveAll(filepath.Join(types.UnixDomainSocketDirectoryOnHost, volumeName+filepath.Ext(".sock"))) +} + func (rc *ReplicaController) deleteInstanceWithCLIAPIVersionOne(r *longhorn.Replica) (err error) { isCLIAPIVersionOne := false if r.Status.CurrentImage != "" {