[ENHANCEMENT] Standardize Error Handling in Event Producer to Enable Retries and Filter Poison Pills
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 42/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- go
- Ambito
- backend, distributed-systems
Direzione di ricerca
Leggi ProcessSearch in workers/event_producer/pkg/producer/producer.go e il comportamento ACK/NACK in lib/gcppubsub/client.go. Segui gli errori degli adapter Spanner e GCS, quindi esamina gli errori sentinel proposti in lib/workertypes/errors.go. Il lavoro è completato quando gli errori transitori del database, dello storage e di Differ vengono ritentati, mentre le entità mancanti e i dati non validi vengono riconosciuti senza ritentare.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description:
Currently, the ProcessSearch function in the Event Producer (workers/event_producer/pkg/producer/producer.go) only wraps errors from AcquireLock with event.ErrTransientFailure. All other errors (Database reads/writes, GCS operations, external API calls) are returned as standard errors.
The Problem:
The Pub/Sub subscriber adapter is configured to ACK (drop) any message where the handler returns a non-transient error. This means that a temporary network glitch (e.g., Spanner read timeout, GCS 503) will cause the notification job to be permanently lost instead of retried.
Conversely, simply wrapping all errors as transient would cause "poison pills" (e.g., invalid Saved Search IDs) to loop infinitely.
Objective:
We need to implement a robust error handling strategy that retries by default (to catch network issues) but fails fast on known invalid states.
Proposed Changes:
- Define Standard Errors: Create
lib/workertypes/errors.goto define sentinel errors for adapters:
var ErrEntityNotFound = errors.New("entity not found")var ErrInvalidData = errors.New("invalid data format")
- Update Adapters: Modify Spanner and GCS adapters to return these specific errors where appropriate (e.g.,
GetLatestEventreturningErrEntityNotFoundif the search ID is invalid). - Update ProcessSearch Logic: Refactor error handling in
ProcessSearchto follow this pattern:
- Permanent Failure Check: If the error matches
workertypes.ErrEntityNotFoundorworkertypes.ErrInvalidData, return it directly (triggering an ACK/Drop). - Transient Default: For all other errors (unknown or network-related), wrap them with
event.ErrTransientFailure(triggering a NACK/Retry).
Acceptance Criteria:
- Transient failures (network blips) in DB, Storage, or Differ now trigger a retry (NACK).
- Permanent failures (missing search ID, bad data) trigger an immediate failure (ACK) and are not retried.
- Lingua principale
- Go
- Stelle
- 255
- Fork
- 62
- Merge medio
- 1g 10h
- PR unite (30g)
- 49
Preparare l'ambiente
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di GoogleChrome/webstatus.dev
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
GoogleChrome/webstatus.dev#2815 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
GoogleChrome/webstatus.dev#2814 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
GoogleChrome/webstatus.dev#2671 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
GoogleChrome/webstatus.dev#2555 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
GoogleChrome/webstatus.dev#2554 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di GoogleChrome/webstatus.dev
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
siderolabs/terraform-provider-talos#414 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
JuliaComputing/jh#63 · 1 commento ·
-
area/proxy kind/bug priority/backlog triage/accepted
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
lexfrei/cloudflare-tunnel-gateway-controller#840 ·
I maintainer di solito rispondono entro 1 giorno
-
Priority: Normal Type: Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
cloudflare/cloudflared#1747 ·