fix: 修复配额说明重复和undefined问题
- 在editStorageForm中初始化oss_storage_quota_value和oss_quota_unit - 删除重复的旧配额说明块,保留新的当前配额设置显示 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
60
backend/node_modules/@smithy/util-waiter/dist-es/poller.js
generated
vendored
Normal file
60
backend/node_modules/@smithy/util-waiter/dist-es/poller.js
generated
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
import { getCircularReplacer } from "./circularReplacer";
|
||||
import { sleep } from "./utils/sleep";
|
||||
import { WaiterState } from "./waiter";
|
||||
const exponentialBackoffWithJitter = (minDelay, maxDelay, attemptCeiling, attempt) => {
|
||||
if (attempt > attemptCeiling)
|
||||
return maxDelay;
|
||||
const delay = minDelay * 2 ** (attempt - 1);
|
||||
return randomInRange(minDelay, delay);
|
||||
};
|
||||
const randomInRange = (min, max) => min + Math.random() * (max - min);
|
||||
export const runPolling = async ({ minDelay, maxDelay, maxWaitTime, abortController, client, abortSignal }, input, acceptorChecks) => {
|
||||
const observedResponses = {};
|
||||
const { state, reason } = await acceptorChecks(client, input);
|
||||
if (reason) {
|
||||
const message = createMessageFromResponse(reason);
|
||||
observedResponses[message] |= 0;
|
||||
observedResponses[message] += 1;
|
||||
}
|
||||
if (state !== WaiterState.RETRY) {
|
||||
return { state, reason, observedResponses };
|
||||
}
|
||||
let currentAttempt = 1;
|
||||
const waitUntil = Date.now() + maxWaitTime * 1000;
|
||||
const attemptCeiling = Math.log(maxDelay / minDelay) / Math.log(2) + 1;
|
||||
while (true) {
|
||||
if (abortController?.signal?.aborted || abortSignal?.aborted) {
|
||||
const message = "AbortController signal aborted.";
|
||||
observedResponses[message] |= 0;
|
||||
observedResponses[message] += 1;
|
||||
return { state: WaiterState.ABORTED, observedResponses };
|
||||
}
|
||||
const delay = exponentialBackoffWithJitter(minDelay, maxDelay, attemptCeiling, currentAttempt);
|
||||
if (Date.now() + delay * 1000 > waitUntil) {
|
||||
return { state: WaiterState.TIMEOUT, observedResponses };
|
||||
}
|
||||
await sleep(delay);
|
||||
const { state, reason } = await acceptorChecks(client, input);
|
||||
if (reason) {
|
||||
const message = createMessageFromResponse(reason);
|
||||
observedResponses[message] |= 0;
|
||||
observedResponses[message] += 1;
|
||||
}
|
||||
if (state !== WaiterState.RETRY) {
|
||||
return { state, reason, observedResponses };
|
||||
}
|
||||
currentAttempt += 1;
|
||||
}
|
||||
};
|
||||
const createMessageFromResponse = (reason) => {
|
||||
if (reason?.$responseBodyText) {
|
||||
return `Deserialization error for body: ${reason.$responseBodyText}`;
|
||||
}
|
||||
if (reason?.$metadata?.httpStatusCode) {
|
||||
if (reason.$response || reason.message) {
|
||||
return `${reason.$response.statusCode ?? reason.$metadata.httpStatusCode ?? "Unknown"}: ${reason.message}`;
|
||||
}
|
||||
return `${reason.$metadata.httpStatusCode}: OK`;
|
||||
}
|
||||
return String(reason?.message ?? JSON.stringify(reason, getCircularReplacer()) ?? "Unknown");
|
||||
};
|
||||
Reference in New Issue
Block a user