@beignet/provider-locks-redis 0.0.51 → 0.0.53
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/CHANGELOG.md +14 -0
- package/README.md +12 -5
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -12
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +71 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @beignet/provider-locks-redis
|
|
2
2
|
|
|
3
|
+
## 0.0.53
|
|
4
|
+
|
|
5
|
+
## 0.0.52
|
|
6
|
+
|
|
7
|
+
### Patch Changes
|
|
8
|
+
|
|
9
|
+
- b39bb6e: Clarify that Beignet applications require Node.js 22.12 or newer and can use
|
|
10
|
+
npm, pnpm, Yarn, or Bun for package management and framework commands.
|
|
11
|
+
- 64dca8d: Bound webhook bodies, keep fallback errors private outside development and
|
|
12
|
+
tests, serialize snapshot-safe local storage operations, preserve ambient audit
|
|
13
|
+
correlation, surface provider shutdown failures, validate timer ranges, and
|
|
14
|
+
omit raw search and database queries from instrumentation. Release unread
|
|
15
|
+
storage bodies explicitly and bound provider-owned Redis shutdown.
|
|
16
|
+
|
|
3
17
|
## 0.0.51
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# @beignet/provider-locks-redis
|
|
2
2
|
|
|
3
|
-
> **Runtime:** Beignet requires Node.js 22.12 or newer. Bun
|
|
4
|
-
> supported for Beignet commands.
|
|
3
|
+
> **Runtime:** Beignet requires Node.js 22.12 or newer. Bun is optional.
|
|
5
4
|
|
|
6
5
|
Redis-backed `LocksPort` provider for Beignet applications.
|
|
7
6
|
|
|
@@ -44,13 +43,17 @@ Environment variables:
|
|
|
44
43
|
- `REDIS_LOCKS_DB`
|
|
45
44
|
- `REDIS_LOCKS_PREFIX`
|
|
46
45
|
- `REDIS_LOCKS_CONNECT_TIMEOUT_MS`
|
|
46
|
+
- `REDIS_LOCKS_SHUTDOWN_TIMEOUT_MS`
|
|
47
47
|
- `REDIS_LOCKS_MAX_RETRIES_PER_REQUEST`
|
|
48
48
|
- `REDIS_LOCKS_CONNECT_MAX_ATTEMPTS`
|
|
49
49
|
|
|
50
50
|
Environment-backed numeric values must be non-negative integer strings. Pass
|
|
51
|
-
numbers to the matching `db`, `connectTimeoutMs`, and
|
|
52
|
-
factory options. Both forms require JavaScript safe
|
|
53
|
-
timeouts cannot exceed 2,147,483,647
|
|
51
|
+
numbers to the matching `db`, `connectTimeoutMs`, `shutdownTimeoutMs`, and
|
|
52
|
+
`maxRetriesPerRequest` factory options. Both forms require JavaScript safe
|
|
53
|
+
integers. Connection and shutdown timeouts cannot exceed 2,147,483,647
|
|
54
|
+
milliseconds, the runtime timer ceiling; shutdown timeouts must be positive.
|
|
55
|
+
Lease `waitMs` must be an integer from 0 through that ceiling;
|
|
56
|
+
`retryDelayMs` must be an integer from 1 through that ceiling.
|
|
54
57
|
|
|
55
58
|
`beignet doctor --strict` checks that installed Redis locks providers are
|
|
56
59
|
registered in `server/providers.ts` and that `REDIS_LOCKS_URL` is present in
|
|
@@ -137,6 +140,10 @@ are not recorded.
|
|
|
137
140
|
The env-backed provider throws during startup when `REDIS_LOCKS_URL` is missing
|
|
138
141
|
or Redis cannot be reached within the configured connection attempts. Runtime
|
|
139
142
|
lock operations throw Redis errors so callers can fail or retry explicitly.
|
|
143
|
+
Provider-owned clients get `REDIS_LOCKS_SHUTDOWN_TIMEOUT_MS` milliseconds
|
|
144
|
+
(default 5000) for a graceful `QUIT`. A rejection or timeout forces a
|
|
145
|
+
disconnect and rejects `server.stop()`, so process entrypoints can report an
|
|
146
|
+
incomplete shutdown.
|
|
140
147
|
`withLease(...)` returns a skipped result when the lease cannot be acquired; do
|
|
141
148
|
not treat a skipped lease as a successful `undefined` result.
|
|
142
149
|
Use `ctx.ports.redisLocks.checkHealth()` from app-owned readiness endpoints to
|
package/dist/index.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export interface RedisLocksConfig {
|
|
|
13
13
|
DB?: number;
|
|
14
14
|
PREFIX: string;
|
|
15
15
|
CONNECT_TIMEOUT_MS: number;
|
|
16
|
+
SHUTDOWN_TIMEOUT_MS: number;
|
|
16
17
|
MAX_RETRIES_PER_REQUEST: number;
|
|
17
18
|
CONNECT_MAX_ATTEMPTS: number;
|
|
18
19
|
}
|
|
@@ -69,6 +70,12 @@ export interface CreateRedisLocksProviderOptions {
|
|
|
69
70
|
client?: RedisLocksClient;
|
|
70
71
|
prefix?: string;
|
|
71
72
|
connectTimeoutMs?: number;
|
|
73
|
+
/**
|
|
74
|
+
* Time allowed for graceful Redis shutdown before forcing a disconnect.
|
|
75
|
+
*
|
|
76
|
+
* @default 5000
|
|
77
|
+
*/
|
|
78
|
+
shutdownTimeoutMs?: number;
|
|
72
79
|
maxRetriesPerRequest?: number;
|
|
73
80
|
retryStrategy?: (times: number) => number | null;
|
|
74
81
|
db?: number;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAKV,SAAS,EACV,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,KAAK,uBAAuB,EAG5B,KAAK,6BAA6B,EAClC,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAKV,SAAS,EACV,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,KAAK,uBAAuB,EAG5B,KAAK,6BAA6B,EAClC,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAkEjC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uBAAuB,EAAE,MAAM,CAAC;IAChC,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CACF,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,GAAG,IAAI,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE;QACR,OAAO,EAAE,aAAa,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,qBAAqB,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAC9C,OAAO,EACP,uBAAuB,CAAC,gBAAgB,CAAC,EACzC,IAAI,CAAC,uBAAuB,EAAE,MAAM,uBAAuB,CAAC,CAC7D,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,6BAA6B,CAAC;IAChD,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;IAChC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjD,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,SAAS,CAqI5E;AA0DD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,+BAAoC,GAC5C,kBAAkB,CA4EpB"}
|
package/dist/index.js
CHANGED
|
@@ -8,9 +8,10 @@ import { createProvider, createProviderInstrumentation, } from "@beignet/core/pr
|
|
|
8
8
|
import { Redis } from "ioredis";
|
|
9
9
|
import { z } from "zod";
|
|
10
10
|
const DEFAULT_CONNECT_TIMEOUT_MS = 5000;
|
|
11
|
+
const DEFAULT_SHUTDOWN_TIMEOUT_MS = 5000;
|
|
11
12
|
const DEFAULT_MAX_RETRIES_PER_REQUEST = 2;
|
|
12
13
|
const DEFAULT_CONNECT_MAX_ATTEMPTS = 3;
|
|
13
|
-
const
|
|
14
|
+
const MAX_TIMER_DELAY_MS = 2_147_483_647;
|
|
14
15
|
const DEFAULT_PREFIX = "beignet:locks";
|
|
15
16
|
const DEFAULT_RETRY_DELAY_MS = 50;
|
|
16
17
|
const RECONNECT_BACKOFF_CAP_MS = 2000;
|
|
@@ -41,12 +42,14 @@ const NonNegativeInteger = z
|
|
|
41
42
|
.transform((value) => Number.parseInt(value, 10)),
|
|
42
43
|
])
|
|
43
44
|
.pipe(z.number().int().nonnegative());
|
|
44
|
-
const ConnectTimeoutMs = NonNegativeInteger.pipe(z.number().max(
|
|
45
|
+
const ConnectTimeoutMs = NonNegativeInteger.pipe(z.number().max(MAX_TIMER_DELAY_MS));
|
|
46
|
+
const PositiveTimerMs = NonNegativeInteger.pipe(z.number().positive().max(MAX_TIMER_DELAY_MS));
|
|
45
47
|
const RedisLocksConfigSchema = z.object({
|
|
46
48
|
URL: z.string().url(),
|
|
47
49
|
DB: NonNegativeInteger.optional(),
|
|
48
50
|
PREFIX: z.string().default(DEFAULT_PREFIX),
|
|
49
51
|
CONNECT_TIMEOUT_MS: ConnectTimeoutMs.default(DEFAULT_CONNECT_TIMEOUT_MS),
|
|
52
|
+
SHUTDOWN_TIMEOUT_MS: PositiveTimerMs.default(DEFAULT_SHUTDOWN_TIMEOUT_MS),
|
|
50
53
|
MAX_RETRIES_PER_REQUEST: NonNegativeInteger.default(DEFAULT_MAX_RETRIES_PER_REQUEST),
|
|
51
54
|
CONNECT_MAX_ATTEMPTS: NonNegativeInteger.default(DEFAULT_CONNECT_MAX_ATTEMPTS),
|
|
52
55
|
});
|
|
@@ -187,6 +190,33 @@ async function checkRedisLocksHealth(client, prefix) {
|
|
|
187
190
|
};
|
|
188
191
|
}
|
|
189
192
|
}
|
|
193
|
+
async function stopRedisClient(client, timeoutMs) {
|
|
194
|
+
let timeout;
|
|
195
|
+
const timeoutError = new Error(`Redis locks graceful shutdown timed out after ${timeoutMs}ms.`);
|
|
196
|
+
timeoutError.name = "RedisLocksShutdownTimeoutError";
|
|
197
|
+
try {
|
|
198
|
+
const gracefulShutdown = client.quit();
|
|
199
|
+
await Promise.race([
|
|
200
|
+
gracefulShutdown,
|
|
201
|
+
new Promise((_, reject) => {
|
|
202
|
+
timeout = setTimeout(() => reject(timeoutError), timeoutMs);
|
|
203
|
+
}),
|
|
204
|
+
]);
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
try {
|
|
208
|
+
client.disconnect();
|
|
209
|
+
}
|
|
210
|
+
catch (disconnectError) {
|
|
211
|
+
throw new AggregateError([error, disconnectError], "Redis locks shutdown and forced disconnect both failed.");
|
|
212
|
+
}
|
|
213
|
+
throw error;
|
|
214
|
+
}
|
|
215
|
+
finally {
|
|
216
|
+
if (timeout !== undefined)
|
|
217
|
+
clearTimeout(timeout);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
190
220
|
/**
|
|
191
221
|
* Create an env-backed Redis locks provider.
|
|
192
222
|
*/
|
|
@@ -224,6 +254,7 @@ export function createRedisLocksProvider(options = {}) {
|
|
|
224
254
|
DB: options.db,
|
|
225
255
|
PREFIX: options.prefix,
|
|
226
256
|
CONNECT_TIMEOUT_MS: options.connectTimeoutMs,
|
|
257
|
+
SHUTDOWN_TIMEOUT_MS: options.shutdownTimeoutMs,
|
|
227
258
|
MAX_RETRIES_PER_REQUEST: options.maxRetriesPerRequest,
|
|
228
259
|
},
|
|
229
260
|
},
|
|
@@ -248,12 +279,7 @@ export function createRedisLocksProvider(options = {}) {
|
|
|
248
279
|
},
|
|
249
280
|
},
|
|
250
281
|
async stop() {
|
|
251
|
-
|
|
252
|
-
await client.quit();
|
|
253
|
-
}
|
|
254
|
-
catch {
|
|
255
|
-
// Ignore shutdown errors.
|
|
256
|
-
}
|
|
282
|
+
await stopRedisClient(client, config.SHUTDOWN_TIMEOUT_MS ?? DEFAULT_SHUTDOWN_TIMEOUT_MS);
|
|
257
283
|
},
|
|
258
284
|
};
|
|
259
285
|
},
|
|
@@ -350,11 +376,17 @@ function validateAcquireOptions(key, options) {
|
|
|
350
376
|
if (!Number.isFinite(options.ttlMs) || options.ttlMs <= 0) {
|
|
351
377
|
throw new LeaseOptionsError("Lease ttlMs must be a positive number.");
|
|
352
378
|
}
|
|
353
|
-
if (options.waitMs !== undefined &&
|
|
354
|
-
|
|
379
|
+
if (options.waitMs !== undefined &&
|
|
380
|
+
(!Number.isInteger(options.waitMs) ||
|
|
381
|
+
options.waitMs < 0 ||
|
|
382
|
+
options.waitMs > MAX_TIMER_DELAY_MS)) {
|
|
383
|
+
throw new LeaseOptionsError(`Lease waitMs must be an integer between 0 and ${MAX_TIMER_DELAY_MS}.`);
|
|
355
384
|
}
|
|
356
|
-
if (options.retryDelayMs !== undefined &&
|
|
357
|
-
|
|
385
|
+
if (options.retryDelayMs !== undefined &&
|
|
386
|
+
(!Number.isInteger(options.retryDelayMs) ||
|
|
387
|
+
options.retryDelayMs <= 0 ||
|
|
388
|
+
options.retryDelayMs > MAX_TIMER_DELAY_MS)) {
|
|
389
|
+
throw new LeaseOptionsError(`Lease retryDelayMs must be an integer between 1 and ${MAX_TIMER_DELAY_MS}.`);
|
|
358
390
|
}
|
|
359
391
|
}
|
|
360
392
|
function reconnectBackoff(attempt) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@beignet/provider-locks-redis",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.53",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Redis-backed lock and lease provider for Beignet",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"devDependencies": {
|
|
65
65
|
"@beignet/core": "*",
|
|
66
66
|
"@beignet/devtools": "*",
|
|
67
|
-
"@types/bun": "^1.
|
|
67
|
+
"@types/bun": "^1.4.0",
|
|
68
68
|
"@types/node": "^22.0.0",
|
|
69
69
|
"ioredis": "^5.0.0",
|
|
70
70
|
"typescript": "^5.3.0"
|
package/src/index.ts
CHANGED
|
@@ -23,9 +23,10 @@ import { Redis } from "ioredis";
|
|
|
23
23
|
import { z } from "zod";
|
|
24
24
|
|
|
25
25
|
const DEFAULT_CONNECT_TIMEOUT_MS = 5000;
|
|
26
|
+
const DEFAULT_SHUTDOWN_TIMEOUT_MS = 5000;
|
|
26
27
|
const DEFAULT_MAX_RETRIES_PER_REQUEST = 2;
|
|
27
28
|
const DEFAULT_CONNECT_MAX_ATTEMPTS = 3;
|
|
28
|
-
const
|
|
29
|
+
const MAX_TIMER_DELAY_MS = 2_147_483_647;
|
|
29
30
|
const DEFAULT_PREFIX = "beignet:locks";
|
|
30
31
|
const DEFAULT_RETRY_DELAY_MS = 50;
|
|
31
32
|
const RECONNECT_BACKOFF_CAP_MS = 2000;
|
|
@@ -62,7 +63,11 @@ const NonNegativeInteger = z
|
|
|
62
63
|
.pipe(z.number().int().nonnegative());
|
|
63
64
|
|
|
64
65
|
const ConnectTimeoutMs = NonNegativeInteger.pipe(
|
|
65
|
-
z.number().max(
|
|
66
|
+
z.number().max(MAX_TIMER_DELAY_MS),
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
const PositiveTimerMs = NonNegativeInteger.pipe(
|
|
70
|
+
z.number().positive().max(MAX_TIMER_DELAY_MS),
|
|
66
71
|
);
|
|
67
72
|
|
|
68
73
|
const RedisLocksConfigSchema = z.object({
|
|
@@ -70,6 +75,7 @@ const RedisLocksConfigSchema = z.object({
|
|
|
70
75
|
DB: NonNegativeInteger.optional(),
|
|
71
76
|
PREFIX: z.string().default(DEFAULT_PREFIX),
|
|
72
77
|
CONNECT_TIMEOUT_MS: ConnectTimeoutMs.default(DEFAULT_CONNECT_TIMEOUT_MS),
|
|
78
|
+
SHUTDOWN_TIMEOUT_MS: PositiveTimerMs.default(DEFAULT_SHUTDOWN_TIMEOUT_MS),
|
|
73
79
|
MAX_RETRIES_PER_REQUEST: NonNegativeInteger.default(
|
|
74
80
|
DEFAULT_MAX_RETRIES_PER_REQUEST,
|
|
75
81
|
),
|
|
@@ -86,6 +92,7 @@ export interface RedisLocksConfig {
|
|
|
86
92
|
DB?: number;
|
|
87
93
|
PREFIX: string;
|
|
88
94
|
CONNECT_TIMEOUT_MS: number;
|
|
95
|
+
SHUTDOWN_TIMEOUT_MS: number;
|
|
89
96
|
MAX_RETRIES_PER_REQUEST: number;
|
|
90
97
|
CONNECT_MAX_ATTEMPTS: number;
|
|
91
98
|
}
|
|
@@ -157,6 +164,12 @@ export interface CreateRedisLocksProviderOptions {
|
|
|
157
164
|
client?: RedisLocksClient;
|
|
158
165
|
prefix?: string;
|
|
159
166
|
connectTimeoutMs?: number;
|
|
167
|
+
/**
|
|
168
|
+
* Time allowed for graceful Redis shutdown before forcing a disconnect.
|
|
169
|
+
*
|
|
170
|
+
* @default 5000
|
|
171
|
+
*/
|
|
172
|
+
shutdownTimeoutMs?: number;
|
|
160
173
|
maxRetriesPerRequest?: number;
|
|
161
174
|
retryStrategy?: (times: number) => number | null;
|
|
162
175
|
db?: number;
|
|
@@ -323,6 +336,39 @@ async function checkRedisLocksHealth(
|
|
|
323
336
|
}
|
|
324
337
|
}
|
|
325
338
|
|
|
339
|
+
async function stopRedisClient(
|
|
340
|
+
client: Redis,
|
|
341
|
+
timeoutMs: number,
|
|
342
|
+
): Promise<void> {
|
|
343
|
+
let timeout: ReturnType<typeof setTimeout> | undefined;
|
|
344
|
+
const timeoutError = new Error(
|
|
345
|
+
`Redis locks graceful shutdown timed out after ${timeoutMs}ms.`,
|
|
346
|
+
);
|
|
347
|
+
timeoutError.name = "RedisLocksShutdownTimeoutError";
|
|
348
|
+
|
|
349
|
+
try {
|
|
350
|
+
const gracefulShutdown = client.quit();
|
|
351
|
+
await Promise.race([
|
|
352
|
+
gracefulShutdown,
|
|
353
|
+
new Promise<never>((_, reject) => {
|
|
354
|
+
timeout = setTimeout(() => reject(timeoutError), timeoutMs);
|
|
355
|
+
}),
|
|
356
|
+
]);
|
|
357
|
+
} catch (error) {
|
|
358
|
+
try {
|
|
359
|
+
client.disconnect();
|
|
360
|
+
} catch (disconnectError) {
|
|
361
|
+
throw new AggregateError(
|
|
362
|
+
[error, disconnectError],
|
|
363
|
+
"Redis locks shutdown and forced disconnect both failed.",
|
|
364
|
+
);
|
|
365
|
+
}
|
|
366
|
+
throw error;
|
|
367
|
+
} finally {
|
|
368
|
+
if (timeout !== undefined) clearTimeout(timeout);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
|
|
326
372
|
/**
|
|
327
373
|
* Create an env-backed Redis locks provider.
|
|
328
374
|
*/
|
|
@@ -366,6 +412,7 @@ export function createRedisLocksProvider(
|
|
|
366
412
|
DB: options.db,
|
|
367
413
|
PREFIX: options.prefix,
|
|
368
414
|
CONNECT_TIMEOUT_MS: options.connectTimeoutMs,
|
|
415
|
+
SHUTDOWN_TIMEOUT_MS: options.shutdownTimeoutMs,
|
|
369
416
|
MAX_RETRIES_PER_REQUEST: options.maxRetriesPerRequest,
|
|
370
417
|
},
|
|
371
418
|
},
|
|
@@ -395,11 +442,10 @@ export function createRedisLocksProvider(
|
|
|
395
442
|
},
|
|
396
443
|
} satisfies RedisLocksProviderPorts,
|
|
397
444
|
async stop() {
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
}
|
|
445
|
+
await stopRedisClient(
|
|
446
|
+
client,
|
|
447
|
+
config.SHUTDOWN_TIMEOUT_MS ?? DEFAULT_SHUTDOWN_TIMEOUT_MS,
|
|
448
|
+
);
|
|
403
449
|
},
|
|
404
450
|
};
|
|
405
451
|
},
|
|
@@ -551,11 +597,25 @@ function validateAcquireOptions(key: string, options: LeaseAcquireOptions) {
|
|
|
551
597
|
if (!Number.isFinite(options.ttlMs) || options.ttlMs <= 0) {
|
|
552
598
|
throw new LeaseOptionsError("Lease ttlMs must be a positive number.");
|
|
553
599
|
}
|
|
554
|
-
if (
|
|
555
|
-
|
|
600
|
+
if (
|
|
601
|
+
options.waitMs !== undefined &&
|
|
602
|
+
(!Number.isInteger(options.waitMs) ||
|
|
603
|
+
options.waitMs < 0 ||
|
|
604
|
+
options.waitMs > MAX_TIMER_DELAY_MS)
|
|
605
|
+
) {
|
|
606
|
+
throw new LeaseOptionsError(
|
|
607
|
+
`Lease waitMs must be an integer between 0 and ${MAX_TIMER_DELAY_MS}.`,
|
|
608
|
+
);
|
|
556
609
|
}
|
|
557
|
-
if (
|
|
558
|
-
|
|
610
|
+
if (
|
|
611
|
+
options.retryDelayMs !== undefined &&
|
|
612
|
+
(!Number.isInteger(options.retryDelayMs) ||
|
|
613
|
+
options.retryDelayMs <= 0 ||
|
|
614
|
+
options.retryDelayMs > MAX_TIMER_DELAY_MS)
|
|
615
|
+
) {
|
|
616
|
+
throw new LeaseOptionsError(
|
|
617
|
+
`Lease retryDelayMs must be an integer between 1 and ${MAX_TIMER_DELAY_MS}.`,
|
|
618
|
+
);
|
|
559
619
|
}
|
|
560
620
|
}
|
|
561
621
|
|