StopJob stops a running quantization job.
(ctx context.Context, userID, jobID string)
| 283 | |
| 284 | // StopJob stops a running quantization job. |
| 285 | func (s *QuantizationService) StopJob(ctx context.Context, userID, jobID string) error { |
| 286 | s.mu.Lock() |
| 287 | job, ok := s.jobs.Get(jobID) |
| 288 | if !ok { |
| 289 | s.mu.Unlock() |
| 290 | return fmt.Errorf("job not found: %s", jobID) |
| 291 | } |
| 292 | if userID != "" && job.UserID != userID { |
| 293 | s.mu.Unlock() |
| 294 | return fmt.Errorf("job not found: %s", jobID) |
| 295 | } |
| 296 | s.mu.Unlock() |
| 297 | |
| 298 | // Kill the backend process directly |
| 299 | stopModelID := job.ModelID |
| 300 | if stopModelID == "" { |
| 301 | stopModelID = job.Backend + "-quantize" |
| 302 | } |
| 303 | s.modelLoader.ShutdownModel(stopModelID) |
| 304 | |
| 305 | s.mu.Lock() |
| 306 | job.Status = "stopped" |
| 307 | job.Message = "Quantization stopped by user" |
| 308 | if err := s.jobs.Set(ctx, job); err != nil { |
| 309 | xlog.Warn("Failed to persist stopped job", "job_id", jobID, "error", err) |
| 310 | } |
| 311 | s.saveJobState(job) |
| 312 | s.mu.Unlock() |
| 313 | |
| 314 | return nil |
| 315 | } |
| 316 | |
| 317 | // DeleteJob removes a quantization job and its associated data from disk. |
| 318 | func (s *QuantizationService) DeleteJob(userID, jobID string) error { |
nothing calls this directly
no test coverage detected