AppRunner: Shutdown on SIGTERM and SIGINT signals
Implement /quitquitquit handler
Change-Id: I0d11791bf3b2831b71548e2ca573e34ad854c561
diff --git a/apps/app-runner/main.go b/apps/app-runner/main.go
index 0449ca5..b11a977 100644
--- a/apps/app-runner/main.go
+++ b/apps/app-runner/main.go
@@ -7,8 +7,10 @@
"log"
"net"
"os"
+ "os/signal"
"path/filepath"
"strings"
+ "syscall"
"golang.org/x/crypto/ssh"
@@ -129,7 +131,16 @@
panic(err)
}
s := NewServer(*agentMode, *port, *appId, *service, id, *repoAddr, *branch, *rootDir, signer, *appDir, cmds, self, *managerAddr)
- if err := s.Start(); err != nil {
- log.Fatal(err)
- }
+ go func() {
+ if err := s.Start(); err != nil {
+ log.Fatal(err)
+ } else {
+ log.Println("Done")
+ os.Exit(0)
+ }
+ }()
+ sigChan := make(chan os.Signal, 1)
+ signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
+ <-sigChan
+ s.Stop()
}