Mark failed evidence descriptions instead of retrying
Previously the worker reset failed descriptions back to PENDING, causing infinite retry loops for permanently broken evidence. Add a FAILED status so these items stop cycling and can be investigated. Signed-off-by: Bryan Frimin <bryan@getprobo.com>
This commit is contained in:
@@ -27,6 +27,7 @@ const (
|
||||
EvidenceDescriptionStatusPending EvidenceDescriptionStatus = "PENDING"
|
||||
EvidenceDescriptionStatusProcessing EvidenceDescriptionStatus = "PROCESSING"
|
||||
EvidenceDescriptionStatusCompleted EvidenceDescriptionStatus = "COMPLETED"
|
||||
EvidenceDescriptionStatusFailed EvidenceDescriptionStatus = "FAILED"
|
||||
)
|
||||
|
||||
func (s EvidenceDescriptionStatus) MarshalText() ([]byte, error) {
|
||||
@@ -43,6 +44,8 @@ func (s *EvidenceDescriptionStatus) UnmarshalText(data []byte) error {
|
||||
*s = EvidenceDescriptionStatusProcessing
|
||||
case EvidenceDescriptionStatusCompleted.String():
|
||||
*s = EvidenceDescriptionStatusCompleted
|
||||
case EvidenceDescriptionStatusFailed.String():
|
||||
*s = EvidenceDescriptionStatusFailed
|
||||
default:
|
||||
return fmt.Errorf("invalid EvidenceDescriptionStatus value: %q", val)
|
||||
}
|
||||
|
||||
1
pkg/coredata/migrations/20260326T150000Z.sql
Normal file
1
pkg/coredata/migrations/20260326T150000Z.sql
Normal file
@@ -0,0 +1 @@
|
||||
ALTER TYPE evidence_description_status ADD VALUE IF NOT EXISTS 'FAILED';
|
||||
@@ -161,8 +161,8 @@ func (w *EvidenceDescriptionWorker) processNext(ctx context.Context, sem chan st
|
||||
log.String("evidence_id", evidence.ID.String()),
|
||||
)
|
||||
|
||||
if err := w.resetEvidence(nonCancelableCtx, &evidence); err != nil {
|
||||
w.logger.ErrorCtx(nonCancelableCtx, "cannot reset evidence description status", log.Error(err))
|
||||
if err := w.failEvidence(nonCancelableCtx, &evidence); err != nil {
|
||||
w.logger.ErrorCtx(nonCancelableCtx, "cannot mark evidence description as failed", log.Error(err))
|
||||
}
|
||||
}
|
||||
}(evidence)
|
||||
@@ -219,7 +219,7 @@ func (w *EvidenceDescriptionWorker) describeAndCommit(
|
||||
)
|
||||
}
|
||||
|
||||
func (w *EvidenceDescriptionWorker) resetEvidence(
|
||||
func (w *EvidenceDescriptionWorker) failEvidence(
|
||||
ctx context.Context,
|
||||
evidence *coredata.Evidence,
|
||||
) error {
|
||||
@@ -228,7 +228,7 @@ func (w *EvidenceDescriptionWorker) resetEvidence(
|
||||
return w.pg.WithTx(
|
||||
ctx,
|
||||
func(tx pg.Conn) error {
|
||||
evidence.DescriptionStatus = coredata.EvidenceDescriptionStatusPending
|
||||
evidence.DescriptionStatus = coredata.EvidenceDescriptionStatusFailed
|
||||
evidence.DescriptionProcessingStartedAt = nil
|
||||
evidence.UpdatedAt = time.Now()
|
||||
if err := evidence.Update(ctx, tx, scope); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user