doc(HISTORY): реализация п.1 (retryable/permanent) и п.3 (DLQ) зафиксирована
This commit is contained in:
@@ -111,7 +111,23 @@
|
||||
permanent (нарушение constraint → не вешать namespace, выброс в лог/DLQ).
|
||||
|
||||
### Статус
|
||||
Реализация п.1 (разделение ошибок flush) и п.3 (ббитые → DLQ) — см. ниже.
|
||||
Реализация п.1 (разделение ошибок flush) и п.3 (битые → DLQ) — см. ниже.
|
||||
|
||||
### Реализовано (п.3) — битые envelope → DLQ (`42f0045`)
|
||||
- `processor.go`: `processTelemetry` возвращает sentinel `errInvalidEnvelope`
|
||||
при битом JSON (вместо молчаливого nil, из-за которого мусор подтверждался и
|
||||
исчезал навсегда).
|
||||
- `consumer.go`: при `errInvalidEnvelope` тело кладётся в DLQ
|
||||
(`SQS_DLQ_NAME`, дефолт `iot-telemetry-dlq`) и основное сообщение подтверждается;
|
||||
без DLQ — только лог (НЕ подтверждаем). Реальные ошибки PG — по-прежнему ретрай.
|
||||
- `config.go`/`defaults.go`: добавлен `SQSDLQName` + `DefaultSQSDLQName`.
|
||||
|
||||
### Реализовано (п.1) — разделение retryable/permanent ошибок flush (`f1a7266`)
|
||||
- `iot_telemetry_store.go`: `isRetryableFlushErr` — `'08'` (connection) и
|
||||
57P01/02/03 (shutdown/crash) retryable (возврат в буфер); `'22'` (data exception)
|
||||
и `'23'` (integrity violation) permanent (батч выбрасывается с логом, НЕ в буфер).
|
||||
- Закрыто замеченное залипание: один «ядовитый» payload больше не зацикливает
|
||||
flush namespace навсегда.
|
||||
|
||||
## Проверки
|
||||
- `go build ./...` и `go vet ./internal/...` — зелёные на каждом шаге.
|
||||
|
||||
Reference in New Issue
Block a user