From b033edec56653283d2b2615560cd9db04f711abf Mon Sep 17 00:00:00 2001 From: fengsilin Date: Wed, 6 May 2026 16:48:55 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20pending=20sync=20records=20=E9=98=9F?= =?UTF-8?q?=E5=88=97=E8=A2=AB=20quota=3D0=20=E6=97=A7=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E9=98=BB=E5=A1=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GetPendingRecordsForSync 添加 quota > 0 过滤条件,避免因上游超时 产生的 quota=0 旧记录(4月29日网络超时遗留)占满批次,阻塞新 的正常的扣费同步到 master 节点。 Co-Authored-By: Claude Opus 4.7 --- model/pending_sync_record.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/model/pending_sync_record.go b/model/pending_sync_record.go index 587bcc5..043eb24 100644 --- a/model/pending_sync_record.go +++ b/model/pending_sync_record.go @@ -87,9 +87,10 @@ func SettlePendingSyncRecord(requestId string, actualQuota int) (bool, error) { } // GetPendingRecordsForSync 获取待同步记录(只同步 settled 和 failed) +// 优先同步 quota > 0 的记录,quota=0 的旧记录不会阻塞正常扣费同步 func GetPendingRecordsForSync(limit, maxRetry int) []PendingSyncRecord { var records []PendingSyncRecord - DB.Where("status IN ? AND retry_count < ?", + DB.Where("status IN ? AND retry_count < ? AND quota > 0", []string{PendingSyncStatusSettled, PendingSyncStatusFailed}, maxRetry). Limit(limit).