Skip to content

Commit e24879e

Browse files
bug: provider daemons would be orphaned
1 parent f9cf79d commit e24879e

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

main.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,11 @@ var log = mvl.Package()
1616

1717
func main() {
1818
if len(os.Args) > 2 && os.Args[1] == "sys.daemon" {
19+
if os.Getenv("GPTSCRIPT_DEBUG") == "true" {
20+
mvl.SetDebug()
21+
}
1922
if err := daemon.SysDaemon(); err != nil {
20-
log.Fatalf("failed running daemon: %v", err)
23+
log.Debugf("failed running daemon: %v", err)
2124
}
2225
os.Exit(0)
2326
}

pkg/engine/daemon.go

+7-8
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,11 @@ func (e *Engine) startDaemon(_ context.Context, tool types.Tool) (string, error)
138138
cmd.Stdin = r
139139
cmd.Stderr = os.Stderr
140140
cmd.Stdout = os.Stdout
141+
cmd.Cancel = func() error {
142+
_ = r.Close()
143+
return w.Close()
144+
}
145+
141146
log.Infof("launched [%s][%s] port [%d] %v", tool.Parameters.Name, tool.ID, port, cmd.Args)
142147
if err := cmd.Start(); err != nil {
143148
stop()
@@ -152,6 +157,7 @@ func (e *Engine) startDaemon(_ context.Context, tool types.Tool) (string, error)
152157
killedCtx, cancel := context.WithCancelCause(ctx)
153158
defer cancel(nil)
154159

160+
e.Ports.daemonWG.Add(1)
155161
go func() {
156162
err := cmd.Wait()
157163
if err != nil {
@@ -166,15 +172,8 @@ func (e *Engine) startDaemon(_ context.Context, tool types.Tool) (string, error)
166172
defer e.Ports.daemonLock.Unlock()
167173

168174
delete(e.Ports.daemonPorts, tool.ID)
169-
}()
170-
171-
e.Ports.daemonWG.Add(1)
172-
context.AfterFunc(ctx, func() {
173-
if err := cmd.Process.Kill(); err != nil {
174-
log.Debugf("daemon failed to kill tool [%s] process: %v", tool.Parameters.Name, err)
175-
}
176175
e.Ports.daemonWG.Done()
177-
})
176+
}()
178177

179178
for i := 0; i < 120; i++ {
180179
resp, err := http.Get(url)

0 commit comments

Comments
 (0)