sceptical-finch(riin-recent-sync 10-10 16:04)失败复盘:17track 物流回写 (宿主机本地进程,不走 advisory 锁)与 sync 写库在 panel 触发器链 (panel.orders/dims/dims_daily)上交叉持锁,冲突窗口持续约 3 分钟, 原 3 次重试(1/3/7s)全部耗尽。加深重试使其可跨过分钟级外部冲突窗口。
This commit is contained in:
+3
-2
@@ -25,8 +25,9 @@ LOOKUP_BATCH = 10000
|
|||||||
# 单锁无环,写事务之间从结构上不可能死锁。1768851058 = "inkr" 的 ASCII 整数表示。
|
# 单锁无环,写事务之间从结构上不可能死锁。1768851058 = "inkr" 的 ASCII 整数表示。
|
||||||
DB_WRITE_LOCK_KEY = 1768851058
|
DB_WRITE_LOCK_KEY = 1768851058
|
||||||
LOCK_TIMEOUT = "15s" # 等锁超时 → LockNotAvailable → 交给重试兜底
|
LOCK_TIMEOUT = "15s" # 等锁超时 → LockNotAvailable → 交给重试兜底
|
||||||
WRITE_RETRIES = 3 # 死锁/等锁超时的整事务重试次数
|
WRITE_RETRIES = 5 # 死锁/等锁超时的整事务重试次数(外部写者如 17track
|
||||||
WRITE_RETRY_BACKOFF = [1, 3, 7] # 重试退避(秒)
|
# 物流回写不走 advisory 锁,冲突窗口可达分钟级,重试需够深)
|
||||||
|
WRITE_RETRY_BACKOFF = [1, 3, 7, 15, 30] # 重试退避(秒;末位预留,最后一次失败直接抛出)
|
||||||
WRITE_RETRYABLE_ERRORS = (pg_errors.DeadlockDetected, pg_errors.LockNotAvailable)
|
WRITE_RETRYABLE_ERRORS = (pg_errors.DeadlockDetected, pg_errors.LockNotAvailable)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user