From 0253a35e72affa4f60012207a5d5959a0088522c Mon Sep 17 00:00:00 2001 From: kdletters Date: Thu, 16 Jul 2026 19:02:42 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E9=BD=90=E5=BD=92=E6=A1=A3=E6=B8=85?= =?UTF-8?q?=E5=8D=95=E4=B8=8A=E4=BC=A0=E9=99=90=E9=80=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 让已有全量归档的 manifest 继承同一上传带宽限制器 收紧并发上传共享累计带宽预算测试 --- scripts/check-database-backup-to-oss.mjs | 7 ++----- scripts/database-backup-to-oss.mjs | 1 + 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/scripts/check-database-backup-to-oss.mjs b/scripts/check-database-backup-to-oss.mjs index e92a1cce7..809d54266 100644 --- a/scripts/check-database-backup-to-oss.mjs +++ b/scripts/check-database-backup-to-oss.mjs @@ -152,13 +152,11 @@ async function assertUploadBandwidthLimiterSharesBudgetAndPropagatesErrors() { '必须为空、0 或 >= 1024 的整数', '上传带宽限制必须拒绝过小值。', ); - let nowMs = 0; const delays = []; const limiter = createUploadBandwidthLimiter(1024, { - nowFn: () => nowMs, + nowFn: () => 0, sleepImpl: async (delayMs) => { delays.push(delayMs); - nowMs += delayMs; }, }); const consume = async (stream) => { @@ -173,8 +171,7 @@ async function assertUploadBandwidthLimiterSharesBudgetAndPropagatesErrors() { consume(limiter.wrap(Readable.from([Buffer.alloc(1024), Buffer.alloc(1024)], {objectMode: false}))), ]); assertEqual(firstBytes + secondBytes, 4096, '共享上传限速器不得丢失并发流内容。'); - assertEqual(nowMs, 4000, '两个并发上传流必须共享同一个总带宽预算。'); - assertEqual(delays.reduce((sum, delayMs) => sum + delayMs, 0), 4000, '共享上传限速器必须预约完整字节时长。'); + assertEqual(delays.join(','), '1000,2000,3000,4000', '两个并发上传流必须共享同一个累计带宽预算。'); let sourceError = null; try { diff --git a/scripts/database-backup-to-oss.mjs b/scripts/database-backup-to-oss.mjs index c4a4b1ef6..80fb5392c 100644 --- a/scripts/database-backup-to-oss.mjs +++ b/scripts/database-backup-to-oss.mjs @@ -2630,6 +2630,7 @@ async function uploadExistingArchive({args, env, bucket, endpoint, accessKeyId, objectKey: uploadedManifest.manifestObjectKey, accessKeyId, accessKeySecret, + bandwidthLimiter, }); uploadedManifest.manifestVerifiedAt = manifestUpload.verifiedAt; uploadedManifest.manifestContentLength = manifestUpload.contentLength;