From 63c763685f1dc94f7efe4742b00b226be99505d0 Mon Sep 17 00:00:00 2001 From: Mark Ward Date: Mon, 29 Apr 2024 18:06:56 +0000 Subject: [PATCH] log when the waiting for the process to stop to help debug when other tasks execute during this wait. expire timer clear the timer reference because it will not be reused. close will clean up expireTimer if calling code has not already done this. --- llm/server.go | 7 ++++++- server/sched.go | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/llm/server.go b/llm/server.go index c82c5099..c9636a82 100644 --- a/llm/server.go +++ b/llm/server.go @@ -902,7 +902,12 @@ func (s *llmServer) Close() error { if err := s.cmd.Process.Kill(); err != nil { return err } - return s.cmd.Wait() + + if err := s.cmd.Wait(); err != nil { + return err + } + + slog.Debug("llama server stopped") } return nil diff --git a/server/sched.go b/server/sched.go index 482bc39a..61c5e1b3 100644 --- a/server/sched.go +++ b/server/sched.go @@ -250,6 +250,7 @@ func (s *Scheduler) processCompleted(ctx context.Context) { defer runner.refMu.Unlock() if runner.expireTimer != nil { runner.expireTimer.Stop() + runner.expireTimer = nil } s.expiredCh <- runner }) @@ -430,6 +431,10 @@ type runnerRef struct { // The refMu must already be held when calling unload func (runner *runnerRef) unload() { + if runner.expireTimer != nil { + runner.expireTimer.Stop() + runner.expireTimer = nil + } if runner.llama != nil { runner.llama.Close() }