瀏覽代碼

return code `499` when user cancels request while a model is loading (#3955)

Jeffrey Morgan 1 年之前
父節點
當前提交
bb31def011
共有 2 個文件被更改,包括 16 次插入1 次删除
  1. 1 1
      llm/server.go
  2. 15 0
      server/routes.go

+ 1 - 1
llm/server.go

@@ -442,7 +442,7 @@ func (s *llmServer) WaitUntilRunning(ctx context.Context) error {
 		select {
 		select {
 		case <-ctx.Done():
 		case <-ctx.Done():
 			slog.Info("context expired before server started")
 			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:
 		case err := <-s.done:
 			msg := ""
 			msg := ""
 			if s.status != nil && s.status.LastErrMsg != "" {
 			if s.status != nil && s.status.LastErrMsg != "" {

+ 15 - 0
server/routes.go

@@ -146,6 +146,11 @@ func (s *Server) GenerateHandler(c *gin.Context) {
 	select {
 	select {
 	case runner = <-rCh:
 	case runner = <-rCh:
 	case err = <-eCh:
 	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()})
 		c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
 		return
 		return
 	}
 	}
@@ -389,6 +394,11 @@ func (s *Server) EmbeddingsHandler(c *gin.Context) {
 	select {
 	select {
 	case runner = <-rCh:
 	case runner = <-rCh:
 	case err = <-eCh:
 	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()})
 		c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
 		return
 		return
 	}
 	}
@@ -1216,6 +1226,11 @@ func (s *Server) ChatHandler(c *gin.Context) {
 	select {
 	select {
 	case runner = <-rCh:
 	case runner = <-rCh:
 	case err = <-eCh:
 	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()})
 		c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
 		return
 		return
 	}
 	}