From e5175a0504d5c04ab6d6ede2ad7999a883822be4 Mon Sep 17 00:00:00 2001 From: yeuimu <2197651308@qq.com> Date: Sat, 10 Oct 2026 09:08:01 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=86=99=E5=BA=93=E9=87=8D=E8=AF=95=203?= =?UTF-8?q?=E2=86=925=20=E6=AC=A1=E3=80=81=E9=80=80=E9=81=BF=E6=8B=89?= =?UTF-8?q?=E9=95=BF=E8=87=B3=201/3/7/15/30s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sceptical-finch(riin-recent-sync 10-10 16:04)失败复盘:17track 物流回写 (宿主机本地进程,不走 advisory 锁)与 sync 写库在 panel 触发器链 (panel.orders/dims/dims_daily)上交叉持锁,冲突窗口持续约 3 分钟, 原 3 次重试(1/3/7s)全部耗尽。加深重试使其可跨过分钟级外部冲突窗口。 --- flows/shared/db.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/flows/shared/db.py b/flows/shared/db.py index b76a998..76b1c6d 100644 --- a/flows/shared/db.py +++ b/flows/shared/db.py @@ -25,8 +25,9 @@ LOOKUP_BATCH = 10000 # 单锁无环,写事务之间从结构上不可能死锁。1768851058 = "inkr" 的 ASCII 整数表示。 DB_WRITE_LOCK_KEY = 1768851058 LOCK_TIMEOUT = "15s" # 等锁超时 → LockNotAvailable → 交给重试兜底 -WRITE_RETRIES = 3 # 死锁/等锁超时的整事务重试次数 -WRITE_RETRY_BACKOFF = [1, 3, 7] # 重试退避(秒) +WRITE_RETRIES = 5 # 死锁/等锁超时的整事务重试次数(外部写者如 17track + # 物流回写不走 advisory 锁,冲突窗口可达分钟级,重试需够深) +WRITE_RETRY_BACKOFF = [1, 3, 7, 15, 30] # 重试退避(秒;末位预留,最后一次失败直接抛出) WRITE_RETRYABLE_ERRORS = (pg_errors.DeadlockDetected, pg_errors.LockNotAvailable)