(run Run)
| 484 | } |
| 485 | |
| 486 | func requireForceFailStatus(run Run) error { |
| 487 | switch run.Status.Normalize() { |
| 488 | case TaskRunStatusQueued, TaskRunStatusClaimed: |
| 489 | return nil |
| 490 | case TaskRunStatusCompleted, TaskRunStatusFailed, TaskRunStatusCanceled: |
| 491 | return forceRunDiagnosticError( |
| 492 | diagnosticcontract.CodeTaskRunAlreadyTerminal, |
| 493 | "Task run is already terminal", |
| 494 | fmt.Sprintf("Run %s is already %s and cannot be force failed.", run.ID, run.Status.Normalize()), |
| 495 | diagnosticcontract.SeverityInfo, |
| 496 | fmt.Sprintf("agh task inspect %s", run.ID), |
| 497 | map[string]any{runEvidenceIDKey: run.ID, leaseStatusKey: string(run.Status.Normalize())}, |
| 498 | ErrInvalidStatusTransition, |
| 499 | ) |
| 500 | default: |
| 501 | return forceRunDiagnosticError( |
| 502 | diagnosticcontract.CodeTaskRunStillActive, |
| 503 | "Task run is still active", |
| 504 | fmt.Sprintf( |
| 505 | "Run %s is %s; active runs must be stopped before forced failure.", |
| 506 | run.ID, |
| 507 | run.Status.Normalize(), |
| 508 | ), |
| 509 | diagnosticcontract.SeverityError, |
| 510 | fmt.Sprintf("agh task cancel %s --reason %q", run.ID, "stop before force fail"), |
| 511 | map[string]any{runEvidenceIDKey: run.ID, leaseStatusKey: string(run.Status.Normalize())}, |
| 512 | ErrInvalidStatusTransition, |
| 513 | ) |
| 514 | } |
| 515 | } |
| 516 | |
| 517 | func (m *Service) requireRetryChainDepth(ctx context.Context, source Run) error { |
| 518 | runs, err := m.store.ListTaskRuns(ctx, RunQuery{TaskID: source.TaskID}) |
no test coverage detected