diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..13566b81 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..0ddbe09c --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/netmaker.iml b/.idea/netmaker.iml new file mode 100644 index 00000000..5e764c4f --- /dev/null +++ b/.idea/netmaker.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..94a25f7f --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/controllers/controller.go b/controllers/controller.go index 4129afa3..008d517f 100644 --- a/controllers/controller.go +++ b/controllers/controller.go @@ -52,20 +52,19 @@ func HandleRESTRequests(wg *sync.WaitGroup) { } }() logger.Log(0, "REST Server successfully started on port ", port, " (REST)") - c := make(chan os.Signal) // Relay os.Interrupt to our channel (os.Interrupt = CTRL+C) // Ignore other incoming signals - signal.Notify(c, os.Interrupt) + ctx, stop := signal.NotifyContext(context.TODO(), os.Interrupt) + defer stop() // Block main routine until a signal is received // As long as user doesn't press CTRL+C a message is not passed and our main routine keeps running - <-c + <-ctx.Done() // After receiving CTRL+C Properly stop the server logger.Log(0, "Stopping the REST server...") srv.Shutdown(context.TODO()) logger.Log(0, "REST Server closed.") logger.DumpFile(fmt.Sprintf("data/netmaker.log.%s", time.Now().Format(logger.TimeFormatDay))) - } diff --git a/main.go b/main.go index c908c5bb..fd9aad97 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,7 @@ package main import ( + "context" "fmt" "net" "os" @@ -157,21 +158,18 @@ func runGRPC(wg *sync.WaitGroup) { }() logger.Log(0, "Agent Server successfully started on port ", grpcport, "(gRPC)") - // Right way to stop the server using a SHUTDOWN HOOK - // Create a channel to receive OS signals - c := make(chan os.Signal, 1) - // Relay os.Interrupt to our channel (os.Interrupt = CTRL+C) // Ignore other incoming signals - signal.Notify(c, os.Interrupt) + ctx, stop := signal.NotifyContext(context.TODO(), os.Interrupt) + defer stop() // Block main routine until a signal is received // As long as user doesn't press CTRL+C a message is not passed and our main routine keeps running - <-c + <-ctx.Done() // After receiving CTRL+C Properly stop the server logger.Log(0, "Stopping the Agent server...") - s.Stop() + s.GracefulStop() listener.Close() logger.Log(0, "Agent server closed..") logger.Log(0, "Closed DB connection.")