aboutsummaryrefslogtreecommitdiff
path: root/connector/external
diff options
context:
space:
mode:
Diffstat (limited to 'connector/external')
-rw-r--r--connector/external/external.go16
1 files changed, 9 insertions, 7 deletions
diff --git a/connector/external/external.go b/connector/external/external.go
index b66ab6c..9896750 100644
--- a/connector/external/external.go
+++ b/connector/external/external.go
@@ -177,6 +177,7 @@ func (ext *External) restartLoop(generation int) {
break
}
log.Printf("Process %s stopped, restarting.", ext.command)
+ log.Printf("Generation %d vs %d", ext.generation, generation)
err := ext.setupProc(generation)
if err != nil {
ext.proc = nil
@@ -326,22 +327,23 @@ func (ext *External) Close() {
ext.sendJson.Encode(&extMessage{
MsgType: CLOSE,
})
+ ext.proc.Process.Signal(os.Interrupt)
- proc := ext.proc
- proc.Process.Signal(os.Interrupt)
ext.recvPipe.Close()
ext.sendPipe.Close()
+ go func() {
+ time.Sleep(1 * time.Second)
+ log.Info("Sending SIGKILL to external process (did not terminate within 1 second)")
+ ext.proc.Process.Kill()
+ }()
+ ext.proc.Wait()
+
ext.proc = nil
ext.recvPipe = nil
ext.sendPipe = nil
ext.sendJson = nil
ext.handlerChan = nil
-
- go func() {
- time.Sleep(1 * time.Second)
- proc.Process.Kill()
- }()
}
// ---- Actual message handling :)