error handling

This commit is contained in:
Roy Han 2024-08-06 11:45:13 -07:00
parent 2a9feb0707
commit a5181a8c51
3 changed files with 9 additions and 7 deletions

View File

@ -457,7 +457,8 @@ type GenerateResponse struct {
}
type WhisperCompletion struct {
Text string `json:"text"`
Text string `json:"text"`
Error string `json:"error,omitempty"`
}
// ModelDetails provides details about a model.

View File

@ -112,7 +112,7 @@ func (s *Server) scheduleRunner(ctx context.Context, name string, caps []Capabil
func (s *Server) runWhisperServer(c *gin.Context, portCh chan int, modelPath string) {
s.sched.whisperMu.Lock()
if s.sched.whisperLoaded[modelPath] != nil {
slog.Info("whisper server already running %s on port %d", modelPath, *s.sched.whisperLoaded[modelPath])
slog.Info(fmt.Sprintf("whisper server already running %s on port %d", modelPath, *s.sched.whisperLoaded[modelPath]))
portCh <- *s.sched.whisperLoaded[modelPath]
s.sched.whisperMu.Unlock()
return
@ -239,17 +239,17 @@ func whisperInference(c *gin.Context, filePath string, port int) (*api.WhisperCo
return nil, err
}
if res.StatusCode >= 400 {
slog.Error("error response from whisper server", "status", res.Status, "body", string(body))
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": "error response from whisper server"})
}
var w api.WhisperCompletion
if err := json.Unmarshal(body, &w); err != nil {
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": "failed to unmarshal response"})
return nil, err
}
if w.Error != "" {
c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{"error": w.Error})
return nil, fmt.Errorf(w.Error)
}
return &w, nil
}

View File

@ -75,6 +75,7 @@ func InitScheduler(ctx context.Context) *Scheduler {
getGpuFn: gpu.GetGPUInfo,
getCpuFn: gpu.GetCPUInfo,
reschedDelay: 250 * time.Millisecond,
whisperLoaded: make(map[string]*int),
}
sched.loadFn = sched.load
return sched