From bb31def0111964d5f6321d78414afae9fbbce2fc Mon Sep 17 00:00:00 2001 From: Jeffrey Morgan Date: Fri, 26 Apr 2024 17:38:29 -0400 Subject: [PATCH] return code `499` when user cancels request while a model is loading (#3955) --- llm/server.go | 2 +- server/routes.go | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/llm/server.go b/llm/server.go index 14d64c19..84babe46 100644 --- a/llm/server.go +++ b/llm/server.go @@ -442,7 +442,7 @@ func (s *llmServer) WaitUntilRunning(ctx context.Context) error { select { case <-ctx.Done(): slog.Info("context expired before server started") - return fmt.Errorf("timed out waiting for llama runner to start") + return fmt.Errorf("timed out waiting for llama runner to start: %w", ctx.Err()) case err := <-s.done: msg := "" if s.status != nil && s.status.LastErrMsg != "" { diff --git a/server/routes.go b/server/routes.go index a5ae3ff4..b1962d23 100644 --- a/server/routes.go +++ b/server/routes.go @@ -146,6 +146,11 @@ func (s *Server) GenerateHandler(c *gin.Context) { select { case runner = <-rCh: case err = <-eCh: + if errors.Is(err, context.Canceled) { + c.JSON(499, gin.H{"error": "request canceled"}) + return + } + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } @@ -389,6 +394,11 @@ func (s *Server) EmbeddingsHandler(c *gin.Context) { select { case runner = <-rCh: case err = <-eCh: + if errors.Is(err, context.Canceled) { + c.JSON(499, gin.H{"error": "request canceled"}) + return + } + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } @@ -1216,6 +1226,11 @@ func (s *Server) ChatHandler(c *gin.Context) { select { case runner = <-rCh: case err = <-eCh: + if errors.Is(err, context.Canceled) { + c.JSON(499, gin.H{"error": "request canceled"}) + return + } + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return }