Peter Steinberger
0ac69b9fe8
fix(zalo): prevent webhook message loss after acknowledgment ( #110630 )
...
* fix(zalo): adopt durable ingress drain with ack gated on raw-envelope append
OA webhooks acked before detached processing behind a 5-minute in-memory
guard, and Zalo does not retry (silent loss). Raw webhook JSON now appends
durably (event_id = Bot API message.message_id, lane per chat.id) before the
200; failed appends answer 400/500 so nothing acks unpersisted. Dispatch runs
through the core drain with serialized admissions across append backoff,
deferred claims held through shutdown until adoption, retry/dead-letter
classification, and 30d/20k tombstones replacing the deleted 5min/5k guard
after its parity test. Webhook and polling transports stay mutually
exclusive; no twin scenario exists across the four received-event types.
Autoreview scanner false-positive on deleted-line token field references; full
manual review performed (ack ordering, dual-transport exclusivity, eleven-test
matrix). Part of the #109657 fleet program (wave 3).
* refactor(zalo): keep webhook runtime exports private
* test(zalo): use managed temp directories
2026-07-18 12:09:22 +01:00
..
2026-07-16 21:21:04 -07:00
2026-07-18 08:21:43 +01:00
2026-07-17 01:09:29 -07:00
2026-07-15 16:23:47 -07:00
2026-07-17 22:36:45 -07:00
2026-07-16 11:33:18 -07:00
2026-07-16 16:47:25 -07:00
2026-07-16 13:55:23 -07:00
2026-07-16 13:55:23 -07:00
2026-07-18 10:58:22 +01:00
2026-07-16 16:47:25 -07:00
2026-07-18 06:42:27 +01:00
2026-07-16 16:47:25 -07:00
2026-07-17 01:11:11 -07:00
2026-07-18 02:12:53 +01:00
2026-07-18 04:06:58 +01:00
2026-07-15 17:05:21 -07:00
2026-07-18 10:37:25 +01:00
2026-07-15 16:23:47 -07:00
2026-07-16 13:55:23 -07:00
2026-07-18 03:32:39 -04:00
2026-07-16 16:47:25 -07:00
2026-07-16 13:55:23 -07:00
2026-07-16 16:47:25 -07:00
2026-07-16 13:55:23 -07:00
2026-07-18 07:46:26 +01:00
2026-07-18 06:23:49 +10:00
2026-07-16 16:47:19 -07:00
2026-07-18 08:42:40 +01:00
2026-07-18 07:08:45 +01:00
2026-07-15 18:18:23 -07:00
2026-07-16 13:55:23 -07:00
2026-07-18 04:26:26 +01:00
2026-07-16 22:22:01 -07:00
2026-07-18 03:28:29 +01:00
2026-07-16 16:47:25 -07:00
2026-07-17 14:44:03 +01:00
2026-07-16 16:47:25 -07:00
2026-07-18 09:00:19 +01:00
2026-07-18 06:27:59 +01:00
2026-07-16 13:55:23 -07:00
2026-07-16 21:54:17 -07:00
2026-07-18 03:32:39 -04:00
2026-07-16 13:55:23 -07:00
2026-07-18 06:27:59 +01:00
2026-07-16 16:47:25 -07:00
2026-07-16 22:41:03 -07:00
2026-07-18 06:27:59 +01:00
2026-07-17 16:36:05 -07:00
2026-07-17 01:12:23 -07:00
2026-07-16 01:45:06 -07:00
2026-07-18 04:06:58 +01:00
2026-07-18 09:33:06 +01:00
2026-07-18 11:42:14 +01:00
2026-07-16 21:35:44 -07:00
2026-07-18 11:42:14 +01:00
2026-07-16 13:55:23 -07:00
2026-07-17 00:56:46 -07:00
2026-07-16 11:10:59 -07:00
2026-07-16 12:56:43 -07:00
2026-07-16 16:47:25 -07:00
2026-07-18 09:29:24 +01:00
2026-07-16 13:55:23 -07:00
2026-07-16 22:41:03 -07:00
2026-07-18 05:33:55 +01:00
2026-07-18 06:27:59 +01:00
2026-07-18 08:13:11 +01:00
2026-07-16 16:47:25 -07:00
2026-07-16 02:11:39 -07:00
2026-07-17 11:38:21 +01:00
2026-07-16 09:15:03 -07:00
2026-07-17 23:14:15 +01:00
2026-07-18 11:14:05 +01:00
2026-07-16 16:47:25 -07:00
2026-07-18 00:11:45 +01:00
2026-07-18 00:36:08 +01:00
2026-07-15 17:05:21 -07:00
2026-07-15 22:40:00 -07:00
2026-07-18 04:06:58 +01:00
2026-07-18 09:35:16 +01:00
2026-07-15 16:23:47 -07:00
2026-07-18 04:06:58 +01:00
2026-07-16 16:47:25 -07:00
2026-07-17 00:56:46 -07:00
2026-07-17 22:24:33 +01:00
2026-07-16 13:55:23 -07:00
2026-07-18 03:32:39 -04:00
2026-07-18 03:32:39 -04:00
2026-07-17 11:11:13 +01:00
2026-07-18 08:32:25 +01:00
2026-07-16 16:47:25 -07:00
2026-07-15 17:05:21 -07:00
2026-07-17 14:36:12 +01:00
2026-07-18 03:32:39 -04:00
2026-07-15 16:23:47 -07:00
2026-07-16 13:55:23 -07:00
2026-07-18 04:06:58 +01:00
2026-07-16 16:47:25 -07:00
2026-07-18 04:06:58 +01:00
2026-07-18 09:46:50 +01:00
2026-07-16 16:47:25 -07:00
2026-07-15 16:36:30 -07:00
2026-07-18 09:09:29 +01:00
2026-07-16 16:47:25 -07:00
2026-07-15 18:18:23 -07:00
2026-07-18 07:59:17 +01:00
2026-07-16 23:56:59 -07:00
2026-07-18 03:32:39 -04:00
2026-07-16 04:10:27 -07:00
2026-07-17 00:28:13 -07:00
2026-07-16 16:47:25 -07:00
2026-07-16 22:41:03 -07:00
2026-07-18 12:09:22 +01:00
2026-07-18 04:06:58 +01:00
2026-07-16 13:55:23 -07:00
2026-07-16 13:55:23 -07:00
2026-07-16 13:55:23 -07:00