You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by sp...@apache.org on 2021/05/31 02:07:29 UTC

[apisix-go-plugin-runner] 22/22: fix: clean up sock file

This is an automated email from the ASF dual-hosted git repository.

spacewander pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-go-plugin-runner.git

commit cfb8bbfa32a62d80ec28ea8576d19c863932cc61
Author: spacewander <sp...@gmail.com>
AuthorDate: Mon May 31 10:06:20 2021 +0800

    fix: clean up sock file
---
 internal/server/server.go      |  7 +++++++
 internal/server/server_test.go | 10 +++++++++-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/internal/server/server.go b/internal/server/server.go
index 7299252..fe2dcea 100644
--- a/internal/server/server.go
+++ b/internal/server/server.go
@@ -175,9 +175,16 @@ func Run() {
 	}
 	log.Infof("listening to %s", sockAddr)
 
+	// clean up sock file created by others
 	if err := os.RemoveAll(sockAddr); err != nil {
 		log.Fatalf("remove file %s: %s", sockAddr, err)
 	}
+	// clean up sock file created by me
+	defer func() {
+		if err := os.RemoveAll(sockAddr); err != nil {
+			log.Errorf("remove file %s: %s", sockAddr, err)
+		}
+	}()
 
 	l, err := net.Listen("unix", sockAddr)
 	if err != nil {
diff --git a/internal/server/server_test.go b/internal/server/server_test.go
index 4a5b3dd..497e073 100644
--- a/internal/server/server_test.go
+++ b/internal/server/server_test.go
@@ -19,6 +19,7 @@ import (
 	"encoding/binary"
 	"net"
 	"os"
+	"syscall"
 	"testing"
 	"time"
 
@@ -34,7 +35,8 @@ func TestGetSockAddr(t *testing.T) {
 }
 
 func TestRun(t *testing.T) {
-	addr := "unix:/tmp/x.sock"
+	path := "/tmp/x.sock"
+	addr := "unix:" + path
 	os.Setenv(SockAddrEnv, addr)
 	os.Setenv(ConfCacheTTLEnv, "60")
 
@@ -65,4 +67,10 @@ func TestRun(t *testing.T) {
 		defer conn.Close()
 		conn.Write(c.header)
 	}
+
+	syscall.Kill(syscall.Getpid(), syscall.SIGINT)
+	time.Sleep(10 * time.Millisecond)
+
+	_, err := os.Stat(path)
+	assert.True(t, os.IsNotExist(err))
 }