@prosopo/load-balancer 2.10.11 → 2.10.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build$colon$cjs.log +6 -5
- package/.turbo/turbo-build$colon$tsc.log +11 -11
- package/.turbo/turbo-build.log +7 -6
- package/CHANGELOG.md +19 -0
- package/dist/cjs/index.cjs +2 -0
- package/dist/cjs/providers.cjs +29 -3
- package/dist/cjs/retry.cjs +30 -0
- package/dist/index.js +3 -1
- package/dist/providers.d.ts +6 -0
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +29 -3
- package/dist/providers.js.map +1 -1
- package/dist/retry.d.ts +10 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +30 -0
- package/dist/retry.js.map +1 -0
- package/dist/tests/providers.unit.test.js +48 -10
- package/dist/tests/providers.unit.test.js.map +1 -1
- package/dist/tests/retry.unit.test.d.ts +2 -0
- package/dist/tests/retry.unit.test.d.ts.map +1 -0
- package/dist/tests/retry.unit.test.js +116 -0
- package/dist/tests/retry.unit.test.js.map +1 -0
- package/package.json +2 -2
- package/src/providers.ts +54 -6
- package/src/retry.ts +77 -0
- package/src/tests/providers.unit.test.ts +64 -9
- package/src/tests/retry.unit.test.ts +151 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/load-balancer@2.10.
|
|
2
|
+
> @prosopo/load-balancer@2.10.13 build:cjs
|
|
3
3
|
> NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
|
|
4
4
|
|
|
5
5
|
ViteCommonJSConfig: .
|
|
@@ -27,9 +27,10 @@ ViteCommonJSConfig: .
|
|
|
27
27
|
Bundle build started
|
|
28
28
|
transforming...
|
|
29
29
|
Build end
|
|
30
|
-
[32m✓[39m
|
|
30
|
+
[32m✓[39m 4 modules transformed.
|
|
31
31
|
rendering chunks...
|
|
32
|
-
[2mdist/cjs/[22m[36mindex.cjs [39m[1m[2m0.
|
|
32
|
+
[2mdist/cjs/[22m[36mindex.cjs [39m[1m[2m0.91 kB[22m[1m[22m
|
|
33
|
+
[2mdist/cjs/[22m[36mretry.cjs [39m[1m[2m1.07 kB[22m[1m[22m
|
|
33
34
|
[2mdist/cjs/[22m[36mbalancer.cjs [39m[1m[2m2.21 kB[22m[1m[22m
|
|
34
|
-
[2mdist/cjs/[22m[36mproviders.cjs [39m[1m[
|
|
35
|
-
[32m✓ built in
|
|
35
|
+
[2mdist/cjs/[22m[36mproviders.cjs [39m[1m[2m5.10 kB[22m[1m[22m
|
|
36
|
+
[32m✓ built in 165ms[39m
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/load-balancer@2.10.
|
|
2
|
+
> @prosopo/load-balancer@2.10.13 build:tsc
|
|
3
3
|
> tsc --build --verbose
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
8:37:57 AM - Projects in this build:
|
|
6
6
|
* ../../dev/config/tsconfig.json
|
|
7
7
|
* ../locale/tsconfig.json
|
|
8
8
|
* ../util/tsconfig.json
|
|
@@ -12,21 +12,21 @@
|
|
|
12
12
|
* ../common/tsconfig.json
|
|
13
13
|
* tsconfig.json
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
8:37:57 AM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/index.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
8:37:57 AM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
8:37:57 AM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
8:37:57 AM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
8:37:57 AM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
8:37:57 AM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/keyring/keyring/types.ts' is older than output '../types/tsconfig.tsbuildinfo'
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
8:37:57 AM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/utils/batches.ts' is older than output '../common/tsconfig.tsbuildinfo'
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
8:37:57 AM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
8:37:57 AM - Building project '/home/runner/work/captcha/captcha/packages/load-balancer/tsconfig.json'...
|
|
32
32
|
|
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/load-balancer@2.10.
|
|
2
|
+
> @prosopo/load-balancer@2.10.13 build
|
|
3
3
|
> npm run build:cross-env -- --mode ${NODE_ENV:-development}
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @prosopo/load-balancer@2.10.
|
|
6
|
+
> @prosopo/load-balancer@2.10.13 build:cross-env
|
|
7
7
|
> vite build --config vite.esm.config.ts --mode production
|
|
8
8
|
|
|
9
9
|
ViteEsmConfig: .
|
|
@@ -31,9 +31,10 @@ ViteEsmConfig: .
|
|
|
31
31
|
Bundle build started
|
|
32
32
|
transforming...
|
|
33
33
|
Build end
|
|
34
|
-
[32m✓[39m
|
|
34
|
+
[32m✓[39m 4 modules transformed.
|
|
35
35
|
rendering chunks...
|
|
36
|
-
[2mdist/[22m[36mindex.js [39m[1m[2m0.
|
|
36
|
+
[2mdist/[22m[36mindex.js [39m[1m[2m0.61 kB[22m[1m[22m
|
|
37
|
+
[2mdist/[22m[36mretry.js [39m[1m[2m0.95 kB[22m[1m[22m
|
|
37
38
|
[2mdist/[22m[36mbalancer.js [39m[1m[2m1.98 kB[22m[1m[22m
|
|
38
|
-
[2mdist/[22m[36mproviders.js [39m[1m[
|
|
39
|
-
[32m✓ built in
|
|
39
|
+
[2mdist/[22m[36mproviders.js [39m[1m[2m4.81 kB[22m[1m[22m
|
|
40
|
+
[32m✓ built in 170ms[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @prosopo/load-balancer
|
|
2
2
|
|
|
3
|
+
## 2.10.13
|
|
4
|
+
### Patch Changes
|
|
5
|
+
|
|
6
|
+
- a39c4ec: fix(load-balancer): retry healthz with exponential backoff and stop falling back to the load-balanced hostname
|
|
7
|
+
|
|
8
|
+
`resolvePinnedUrl` previously swallowed any healthz failure (network error, non-2xx, malformed body) and returned the load-balanced hostname (`pronode.prosopo.io`). That hostname isn't a registered on-chain provider, so the verify path rejected every token minted through this fallback with `Provider not found`. The tab-scoped promise cache made it worse: one healthz blip at page load poisoned every subsequent captcha attempt in that tab.
|
|
9
|
+
|
|
10
|
+
Now:
|
|
11
|
+
|
|
12
|
+
- Healthz is retried with full-jitter exponential backoff (3 attempts total, 250ms/500ms base, 2s cap) before surfacing the error.
|
|
13
|
+
- On terminal failure the pin cache entry is evicted and the error is thrown, so `providerRetry` in `@prosopo/procaptcha-common` can fall through to `getRandomProviderFromList` (which picks a specific on-chain provider and bypasses healthz entirely).
|
|
14
|
+
- Extracted a small `retryWithBackoff` helper in the same package for the backoff maths.
|
|
15
|
+
|
|
16
|
+
## 2.10.12
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- Updated dependencies [0a4f902]
|
|
20
|
+
- @prosopo/types@4.9.10
|
|
21
|
+
|
|
3
22
|
## 2.10.11
|
|
4
23
|
### Patch Changes
|
|
5
24
|
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const providers = require("./providers.cjs");
|
|
4
4
|
const balancer = require("./balancer.cjs");
|
|
5
|
+
exports._resetHealthzRetryPolicy = providers._resetHealthzRetryPolicy;
|
|
5
6
|
exports._resetPinCache = providers._resetPinCache;
|
|
6
7
|
exports._resetProviderListCache = providers._resetProviderListCache;
|
|
8
|
+
exports._setHealthzRetryPolicy = providers._setHealthzRetryPolicy;
|
|
7
9
|
exports.getProviders = providers.getProviders;
|
|
8
10
|
exports.getRandomActiveProvider = providers.getRandomActiveProvider;
|
|
9
11
|
exports.getRandomProviderFromList = providers.getRandomProviderFromList;
|
package/dist/cjs/providers.cjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const balancer = require("./balancer.cjs");
|
|
4
|
+
const retry = require("./retry.cjs");
|
|
4
5
|
const DNS_ENDPOINT = {
|
|
5
6
|
development: "https://localhost:9229",
|
|
6
7
|
staging: "https://staging.pronode.prosopo.io",
|
|
@@ -19,6 +20,12 @@ const applyIpModeToUrl = (url, ipMode) => {
|
|
|
19
20
|
};
|
|
20
21
|
const cacheKey = (env, ipMode) => `${env}|${ipMode ?? "dual"}`;
|
|
21
22
|
const pinPromiseCache = /* @__PURE__ */ new Map();
|
|
23
|
+
const HEALTHZ_MAX_ATTEMPTS = 3;
|
|
24
|
+
const HEALTHZ_RETRY_BASE_DELAY_MS = 250;
|
|
25
|
+
const HEALTHZ_RETRY_MAX_DELAY_MS = 2e3;
|
|
26
|
+
let healthzMaxAttempts = HEALTHZ_MAX_ATTEMPTS;
|
|
27
|
+
let healthzRetryBaseDelayMs = HEALTHZ_RETRY_BASE_DELAY_MS;
|
|
28
|
+
let healthzRetryMaxDelayMs = HEALTHZ_RETRY_MAX_DELAY_MS;
|
|
22
29
|
const fetchPinnedHost = async (baseUrl) => {
|
|
23
30
|
const res = await fetch(`${baseUrl}/healthz`, {
|
|
24
31
|
method: "GET",
|
|
@@ -34,6 +41,11 @@ const fetchPinnedHost = async (baseUrl) => {
|
|
|
34
41
|
}
|
|
35
42
|
return body.host;
|
|
36
43
|
};
|
|
44
|
+
const fetchPinnedHostWithRetry = (baseUrl) => retry.retryWithBackoff(() => fetchPinnedHost(baseUrl), {
|
|
45
|
+
maxAttempts: healthzMaxAttempts,
|
|
46
|
+
baseDelayMs: healthzRetryBaseDelayMs,
|
|
47
|
+
maxDelayMs: healthzRetryMaxDelayMs
|
|
48
|
+
});
|
|
37
49
|
const resolveBaseUrl = (env) => DNS_ENDPOINT[env] ?? DNS_ENDPOINT.development;
|
|
38
50
|
const resolvePinnedUrl = async (env, ipMode) => {
|
|
39
51
|
const base = applyIpModeToUrl(resolveBaseUrl(env), ipMode);
|
|
@@ -43,12 +55,13 @@ const resolvePinnedUrl = async (env, ipMode) => {
|
|
|
43
55
|
if (cached) return cached;
|
|
44
56
|
const promise = (async () => {
|
|
45
57
|
try {
|
|
46
|
-
const host = await
|
|
58
|
+
const host = await fetchPinnedHostWithRetry(base);
|
|
47
59
|
const parsed = new URL(base);
|
|
48
60
|
parsed.hostname = withIpModeLabel(host, ipMode);
|
|
49
61
|
return parsed.toString().replace(/\/$/, "");
|
|
50
|
-
} catch {
|
|
51
|
-
|
|
62
|
+
} catch (err) {
|
|
63
|
+
pinPromiseCache.delete(key);
|
|
64
|
+
throw err;
|
|
52
65
|
}
|
|
53
66
|
})();
|
|
54
67
|
pinPromiseCache.set(key, promise);
|
|
@@ -108,8 +121,21 @@ const _resetPinCache = () => {
|
|
|
108
121
|
const _resetProviderListCache = () => {
|
|
109
122
|
providerListPromiseCache.clear();
|
|
110
123
|
};
|
|
124
|
+
const _setHealthzRetryPolicy = (opts) => {
|
|
125
|
+
if (opts.maxAttempts !== void 0) healthzMaxAttempts = opts.maxAttempts;
|
|
126
|
+
if (opts.baseDelayMs !== void 0)
|
|
127
|
+
healthzRetryBaseDelayMs = opts.baseDelayMs;
|
|
128
|
+
if (opts.maxDelayMs !== void 0) healthzRetryMaxDelayMs = opts.maxDelayMs;
|
|
129
|
+
};
|
|
130
|
+
const _resetHealthzRetryPolicy = () => {
|
|
131
|
+
healthzMaxAttempts = HEALTHZ_MAX_ATTEMPTS;
|
|
132
|
+
healthzRetryBaseDelayMs = HEALTHZ_RETRY_BASE_DELAY_MS;
|
|
133
|
+
healthzRetryMaxDelayMs = HEALTHZ_RETRY_MAX_DELAY_MS;
|
|
134
|
+
};
|
|
135
|
+
exports._resetHealthzRetryPolicy = _resetHealthzRetryPolicy;
|
|
111
136
|
exports._resetPinCache = _resetPinCache;
|
|
112
137
|
exports._resetProviderListCache = _resetProviderListCache;
|
|
138
|
+
exports._setHealthzRetryPolicy = _setHealthzRetryPolicy;
|
|
113
139
|
exports.getProviders = getProviders;
|
|
114
140
|
exports.getRandomActiveProvider = getRandomActiveProvider;
|
|
115
141
|
exports.getRandomProviderFromList = getRandomProviderFromList;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const defaultSleep = (ms) => ms > 0 ? new Promise((resolve) => setTimeout(resolve, ms)) : Promise.resolve();
|
|
4
|
+
const getBackoffDelayMs = (attempt, baseDelayMs, maxDelayMs, random = Math.random) => {
|
|
5
|
+
const safeAttempt = Math.max(0, Math.floor(attempt));
|
|
6
|
+
const cap = Math.min(maxDelayMs, baseDelayMs * 2 ** safeAttempt);
|
|
7
|
+
return Math.round(random() * cap);
|
|
8
|
+
};
|
|
9
|
+
const retryWithBackoff = async (fn, opts) => {
|
|
10
|
+
const {
|
|
11
|
+
maxAttempts,
|
|
12
|
+
baseDelayMs,
|
|
13
|
+
maxDelayMs,
|
|
14
|
+
random = Math.random,
|
|
15
|
+
sleep = defaultSleep
|
|
16
|
+
} = opts;
|
|
17
|
+
let lastErr;
|
|
18
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
19
|
+
try {
|
|
20
|
+
return await fn();
|
|
21
|
+
} catch (err) {
|
|
22
|
+
lastErr = err;
|
|
23
|
+
if (attempt >= maxAttempts - 1) break;
|
|
24
|
+
await sleep(getBackoffDelayMs(attempt, baseDelayMs, maxDelayMs, random));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
throw lastErr instanceof Error ? lastErr : new Error(String(lastErr));
|
|
28
|
+
};
|
|
29
|
+
exports.getBackoffDelayMs = getBackoffDelayMs;
|
|
30
|
+
exports.retryWithBackoff = retryWithBackoff;
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { _resetPinCache, _resetProviderListCache, getProviders, getRandomActiveProvider, getRandomProviderFromList } from "./providers.js";
|
|
1
|
+
import { _resetHealthzRetryPolicy, _resetPinCache, _resetProviderListCache, _setHealthzRetryPolicy, getProviders, getRandomActiveProvider, getRandomProviderFromList } from "./providers.js";
|
|
2
2
|
import { convertHostedProvider, getLoadBalancerUrl, getProviderHostname, loadBalancer, stripIpModeLabel } from "./balancer.js";
|
|
3
3
|
export {
|
|
4
|
+
_resetHealthzRetryPolicy,
|
|
4
5
|
_resetPinCache,
|
|
5
6
|
_resetProviderListCache,
|
|
7
|
+
_setHealthzRetryPolicy,
|
|
6
8
|
convertHostedProvider,
|
|
7
9
|
getLoadBalancerUrl,
|
|
8
10
|
getProviderHostname,
|
package/dist/providers.d.ts
CHANGED
|
@@ -5,4 +5,10 @@ export declare const getRandomActiveProvider: (env: EnvironmentTypes, ipMode?: I
|
|
|
5
5
|
export declare const getRandomProviderFromList: (env: EnvironmentTypes, ipMode?: IpMode, excludeUrl?: string, random?: () => number) => Promise<RandomProvider>;
|
|
6
6
|
export declare const _resetPinCache: () => void;
|
|
7
7
|
export declare const _resetProviderListCache: () => void;
|
|
8
|
+
export declare const _setHealthzRetryPolicy: (opts: {
|
|
9
|
+
maxAttempts?: number;
|
|
10
|
+
baseDelayMs?: number;
|
|
11
|
+
maxDelayMs?: number;
|
|
12
|
+
}) => void;
|
|
13
|
+
export declare const _resetHealthzRetryPolicy: () => void;
|
|
8
14
|
//# sourceMappingURL=providers.d.ts.map
|
package/dist/providers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,MAAM,EAEX,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,MAAM,EAEX,MAAM,eAAe,CAAC;AAqIvB,eAAO,MAAM,YAAY,QACnB,gBAAgB,KACnB,OAAO,CAAC,iBAAiB,EAAE,CAY7B,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAC9B,gBAAgB,WACZ,MAAM,KACb,OAAO,CAAC,cAAc,CAMxB,CAAC;AAoCF,eAAO,MAAM,yBAAyB,QAChC,gBAAgB,WACZ,MAAM,eACF,MAAM,WACX,MAAM,MAAM,KAClB,OAAO,CAAC,cAAc,CAyBxB,CAAC;AAIF,eAAO,MAAM,cAAc,YAE1B,CAAC;AAIF,eAAO,MAAM,uBAAuB,YAEnC,CAAC;AAKF,eAAO,MAAM,sBAAsB,SAAU;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,SAKA,CAAC;AAKF,eAAO,MAAM,wBAAwB,YAIpC,CAAC"}
|
package/dist/providers.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { loadBalancer } from "./balancer.js";
|
|
2
|
+
import { retryWithBackoff } from "./retry.js";
|
|
2
3
|
const DNS_ENDPOINT = {
|
|
3
4
|
development: "https://localhost:9229",
|
|
4
5
|
staging: "https://staging.pronode.prosopo.io",
|
|
@@ -17,6 +18,12 @@ const applyIpModeToUrl = (url, ipMode) => {
|
|
|
17
18
|
};
|
|
18
19
|
const cacheKey = (env, ipMode) => `${env}|${ipMode ?? "dual"}`;
|
|
19
20
|
const pinPromiseCache = /* @__PURE__ */ new Map();
|
|
21
|
+
const HEALTHZ_MAX_ATTEMPTS = 3;
|
|
22
|
+
const HEALTHZ_RETRY_BASE_DELAY_MS = 250;
|
|
23
|
+
const HEALTHZ_RETRY_MAX_DELAY_MS = 2e3;
|
|
24
|
+
let healthzMaxAttempts = HEALTHZ_MAX_ATTEMPTS;
|
|
25
|
+
let healthzRetryBaseDelayMs = HEALTHZ_RETRY_BASE_DELAY_MS;
|
|
26
|
+
let healthzRetryMaxDelayMs = HEALTHZ_RETRY_MAX_DELAY_MS;
|
|
20
27
|
const fetchPinnedHost = async (baseUrl) => {
|
|
21
28
|
const res = await fetch(`${baseUrl}/healthz`, {
|
|
22
29
|
method: "GET",
|
|
@@ -32,6 +39,11 @@ const fetchPinnedHost = async (baseUrl) => {
|
|
|
32
39
|
}
|
|
33
40
|
return body.host;
|
|
34
41
|
};
|
|
42
|
+
const fetchPinnedHostWithRetry = (baseUrl) => retryWithBackoff(() => fetchPinnedHost(baseUrl), {
|
|
43
|
+
maxAttempts: healthzMaxAttempts,
|
|
44
|
+
baseDelayMs: healthzRetryBaseDelayMs,
|
|
45
|
+
maxDelayMs: healthzRetryMaxDelayMs
|
|
46
|
+
});
|
|
35
47
|
const resolveBaseUrl = (env) => DNS_ENDPOINT[env] ?? DNS_ENDPOINT.development;
|
|
36
48
|
const resolvePinnedUrl = async (env, ipMode) => {
|
|
37
49
|
const base = applyIpModeToUrl(resolveBaseUrl(env), ipMode);
|
|
@@ -41,12 +53,13 @@ const resolvePinnedUrl = async (env, ipMode) => {
|
|
|
41
53
|
if (cached) return cached;
|
|
42
54
|
const promise = (async () => {
|
|
43
55
|
try {
|
|
44
|
-
const host = await
|
|
56
|
+
const host = await fetchPinnedHostWithRetry(base);
|
|
45
57
|
const parsed = new URL(base);
|
|
46
58
|
parsed.hostname = withIpModeLabel(host, ipMode);
|
|
47
59
|
return parsed.toString().replace(/\/$/, "");
|
|
48
|
-
} catch {
|
|
49
|
-
|
|
60
|
+
} catch (err) {
|
|
61
|
+
pinPromiseCache.delete(key);
|
|
62
|
+
throw err;
|
|
50
63
|
}
|
|
51
64
|
})();
|
|
52
65
|
pinPromiseCache.set(key, promise);
|
|
@@ -106,9 +119,22 @@ const _resetPinCache = () => {
|
|
|
106
119
|
const _resetProviderListCache = () => {
|
|
107
120
|
providerListPromiseCache.clear();
|
|
108
121
|
};
|
|
122
|
+
const _setHealthzRetryPolicy = (opts) => {
|
|
123
|
+
if (opts.maxAttempts !== void 0) healthzMaxAttempts = opts.maxAttempts;
|
|
124
|
+
if (opts.baseDelayMs !== void 0)
|
|
125
|
+
healthzRetryBaseDelayMs = opts.baseDelayMs;
|
|
126
|
+
if (opts.maxDelayMs !== void 0) healthzRetryMaxDelayMs = opts.maxDelayMs;
|
|
127
|
+
};
|
|
128
|
+
const _resetHealthzRetryPolicy = () => {
|
|
129
|
+
healthzMaxAttempts = HEALTHZ_MAX_ATTEMPTS;
|
|
130
|
+
healthzRetryBaseDelayMs = HEALTHZ_RETRY_BASE_DELAY_MS;
|
|
131
|
+
healthzRetryMaxDelayMs = HEALTHZ_RETRY_MAX_DELAY_MS;
|
|
132
|
+
};
|
|
109
133
|
export {
|
|
134
|
+
_resetHealthzRetryPolicy,
|
|
110
135
|
_resetPinCache,
|
|
111
136
|
_resetProviderListCache,
|
|
137
|
+
_setHealthzRetryPolicy,
|
|
112
138
|
getProviders,
|
|
113
139
|
getRandomActiveProvider,
|
|
114
140
|
getRandomProviderFromList
|
package/dist/providers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAeA,OAAO,EAGN,YAAY,GACZ,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"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"}
|
package/dist/retry.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type RetryOptions = {
|
|
2
|
+
maxAttempts: number;
|
|
3
|
+
baseDelayMs: number;
|
|
4
|
+
maxDelayMs: number;
|
|
5
|
+
random?: () => number;
|
|
6
|
+
sleep?: (ms: number) => Promise<void>;
|
|
7
|
+
};
|
|
8
|
+
export declare const getBackoffDelayMs: (attempt: number, baseDelayMs: number, maxDelayMs: number, random?: () => number) => number;
|
|
9
|
+
export declare const retryWithBackoff: <T>(fn: () => Promise<T>, opts: RetryOptions) => Promise<T>;
|
|
10
|
+
//# sourceMappingURL=retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,YAAY,GAAG;IAE1B,WAAW,EAAE,MAAM,CAAC;IAEpB,WAAW,EAAE,MAAM,CAAC;IAEpB,UAAU,EAAE,MAAM,CAAC;IAEnB,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IAEtB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC,CAAC;AAaF,eAAO,MAAM,iBAAiB,YACpB,MAAM,eACF,MAAM,cACP,MAAM,WACV,MAAM,MAAM,KAClB,MAIF,CAAC;AAOF,eAAO,MAAM,gBAAgB,GAAU,CAAC,MACnC,MAAM,OAAO,CAAC,CAAC,CAAC,QACd,YAAY,KAChB,OAAO,CAAC,CAAC,CAmBX,CAAC"}
|
package/dist/retry.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const defaultSleep = (ms) => ms > 0 ? new Promise((resolve) => setTimeout(resolve, ms)) : Promise.resolve();
|
|
2
|
+
const getBackoffDelayMs = (attempt, baseDelayMs, maxDelayMs, random = Math.random) => {
|
|
3
|
+
const safeAttempt = Math.max(0, Math.floor(attempt));
|
|
4
|
+
const cap = Math.min(maxDelayMs, baseDelayMs * 2 ** safeAttempt);
|
|
5
|
+
return Math.round(random() * cap);
|
|
6
|
+
};
|
|
7
|
+
const retryWithBackoff = async (fn, opts) => {
|
|
8
|
+
const {
|
|
9
|
+
maxAttempts,
|
|
10
|
+
baseDelayMs,
|
|
11
|
+
maxDelayMs,
|
|
12
|
+
random = Math.random,
|
|
13
|
+
sleep = defaultSleep
|
|
14
|
+
} = opts;
|
|
15
|
+
let lastErr;
|
|
16
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
17
|
+
try {
|
|
18
|
+
return await fn();
|
|
19
|
+
} catch (err) {
|
|
20
|
+
lastErr = err;
|
|
21
|
+
if (attempt >= maxAttempts - 1) break;
|
|
22
|
+
await sleep(getBackoffDelayMs(attempt, baseDelayMs, maxDelayMs, random));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
throw lastErr instanceof Error ? lastErr : new Error(String(lastErr));
|
|
26
|
+
};
|
|
27
|
+
export {
|
|
28
|
+
getBackoffDelayMs,
|
|
29
|
+
retryWithBackoff
|
|
30
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AA2BA,MAAM,YAAY,GAAG,CAAC,EAAU,EAAiB,EAAE,CAClD,EAAE,GAAG,CAAC;IACL,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAQtB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAChC,OAAe,EACf,WAAmB,EACnB,UAAkB,EAClB,SAAuB,IAAI,CAAC,MAAM,EACzB,EAAE;IACX,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC;IACjE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;AACnC,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACpC,EAAoB,EACpB,IAAkB,EACL,EAAE;IACf,MAAM,EACL,WAAW,EACX,WAAW,EACX,UAAU,EACV,MAAM,GAAG,IAAI,CAAC,MAAM,EACpB,KAAK,GAAG,YAAY,GACpB,GAAG,IAAI,CAAC;IACT,IAAI,OAAgB,CAAC;IACrB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC;YACJ,OAAO,MAAM,EAAE,EAAE,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,GAAG,GAAG,CAAC;YACd,IAAI,OAAO,IAAI,WAAW,GAAG,CAAC;gBAAE,MAAM;YACtC,MAAM,KAAK,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1E,CAAC;IACF,CAAC;IACD,MAAM,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
|
-
import { _resetPinCache, _resetProviderListCache, getProviders, getRandomActiveProvider, getRandomProviderFromList, } from "../providers.js";
|
|
2
|
+
import { _resetHealthzRetryPolicy, _resetPinCache, _resetProviderListCache, _setHealthzRetryPolicy, getProviders, getRandomActiveProvider, getRandomProviderFromList, } from "../providers.js";
|
|
3
3
|
const loadBalancer = vi.fn();
|
|
4
4
|
vi.mock("../balancer.js", () => ({
|
|
5
5
|
loadBalancer: (...args) => loadBalancer(...args),
|
|
@@ -16,9 +16,11 @@ const mockHealthzFetch = (host, ok = true, status = 200) => {
|
|
|
16
16
|
};
|
|
17
17
|
beforeEach(() => {
|
|
18
18
|
_resetPinCache();
|
|
19
|
+
_setHealthzRetryPolicy({ baseDelayMs: 0, maxDelayMs: 0 });
|
|
19
20
|
});
|
|
20
21
|
afterEach(() => {
|
|
21
22
|
globalThis.fetch = originalFetch;
|
|
23
|
+
_resetHealthzRetryPolicy();
|
|
22
24
|
});
|
|
23
25
|
describe("getRandomActiveProvider (dual stack)", () => {
|
|
24
26
|
it("uses the local URL directly in development (no healthz round-trip)", async () => {
|
|
@@ -44,20 +46,57 @@ describe("getRandomActiveProvider (dual stack)", () => {
|
|
|
44
46
|
await getRandomActiveProvider("production");
|
|
45
47
|
expect(mocked).toHaveBeenCalledTimes(1);
|
|
46
48
|
});
|
|
47
|
-
it("
|
|
48
|
-
mockHealthzFetch("ignored", false, 503);
|
|
49
|
-
|
|
50
|
-
expect(
|
|
49
|
+
it("throws after all healthz retries are exhausted (does not fall back to LB hostname)", async () => {
|
|
50
|
+
const mocked = mockHealthzFetch("ignored", false, 503);
|
|
51
|
+
await expect(getRandomActiveProvider("production")).rejects.toThrow(/healthz responded with 503/);
|
|
52
|
+
expect(mocked).toHaveBeenCalledTimes(3);
|
|
51
53
|
});
|
|
52
|
-
it("
|
|
54
|
+
it("throws when the healthz body is malformed after retries", async () => {
|
|
53
55
|
const mocked = vi.fn(async () => ({
|
|
54
56
|
ok: true,
|
|
55
57
|
status: 200,
|
|
56
58
|
json: async () => ({ ok: true }),
|
|
57
59
|
}));
|
|
58
60
|
globalThis.fetch = mocked;
|
|
61
|
+
await expect(getRandomActiveProvider("production")).rejects.toThrow(/missing host field/);
|
|
62
|
+
expect(mocked).toHaveBeenCalledTimes(3);
|
|
63
|
+
});
|
|
64
|
+
it("retries a transient healthz failure and pins on the eventual success", async () => {
|
|
65
|
+
let call = 0;
|
|
66
|
+
const mocked = vi.fn(async () => {
|
|
67
|
+
call++;
|
|
68
|
+
if (call === 1) {
|
|
69
|
+
return { ok: false, status: 503, json: async () => ({}) };
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
ok: true,
|
|
73
|
+
status: 200,
|
|
74
|
+
json: async () => ({ ok: true, host: "pronode8.prosopo.io" }),
|
|
75
|
+
};
|
|
76
|
+
});
|
|
77
|
+
globalThis.fetch = mocked;
|
|
59
78
|
const result = await getRandomActiveProvider("production");
|
|
60
|
-
expect(result.provider.url).toBe("https://
|
|
79
|
+
expect(result.provider.url).toBe("https://pronode8.prosopo.io");
|
|
80
|
+
expect(mocked).toHaveBeenCalledTimes(2);
|
|
81
|
+
});
|
|
82
|
+
it("evicts a failed pin so the next captcha attempt retries healthz fresh", async () => {
|
|
83
|
+
let call = 0;
|
|
84
|
+
const mocked = vi.fn(async () => {
|
|
85
|
+
call++;
|
|
86
|
+
if (call <= 3) {
|
|
87
|
+
return { ok: false, status: 502, json: async () => ({}) };
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
ok: true,
|
|
91
|
+
status: 200,
|
|
92
|
+
json: async () => ({ ok: true, host: "pronode9.prosopo.io" }),
|
|
93
|
+
};
|
|
94
|
+
});
|
|
95
|
+
globalThis.fetch = mocked;
|
|
96
|
+
await expect(getRandomActiveProvider("production")).rejects.toThrow();
|
|
97
|
+
const result = await getRandomActiveProvider("production");
|
|
98
|
+
expect(result.provider.url).toBe("https://pronode9.prosopo.io");
|
|
99
|
+
expect(mocked).toHaveBeenCalledTimes(4);
|
|
61
100
|
});
|
|
62
101
|
});
|
|
63
102
|
describe("getRandomActiveProvider (single stack ipMode)", () => {
|
|
@@ -73,10 +112,9 @@ describe("getRandomActiveProvider (single stack ipMode)", () => {
|
|
|
73
112
|
expect(result.provider.url).toBe("https://ipv6.staging-pronode2.prosopo.io");
|
|
74
113
|
expect(mocked).toHaveBeenCalledWith("https://ipv6.staging.pronode.prosopo.io/healthz", expect.any(Object));
|
|
75
114
|
});
|
|
76
|
-
it("
|
|
115
|
+
it("throws for ipv4 mode when /healthz fails (no fallback to ipv4.pronode.prosopo.io)", async () => {
|
|
77
116
|
mockHealthzFetch("ignored", false, 500);
|
|
78
|
-
|
|
79
|
-
expect(result.provider.url).toBe("https://ipv4.pronode.prosopo.io");
|
|
117
|
+
await expect(getRandomActiveProvider("production", "ipv4")).rejects.toThrow(/healthz responded with 500/);
|
|
80
118
|
});
|
|
81
119
|
it("keeps the dual-stack cache and the ipv4 cache separate", async () => {
|
|
82
120
|
const mocked = mockHealthzFetch("pronode9.prosopo.io");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.unit.test.js","sourceRoot":"","sources":["../../src/tests/providers.unit.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"providers.unit.test.js","sourceRoot":"","sources":["../../src/tests/providers.unit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/retry.unit.test.ts"],"names":[],"mappings":""}
|