@medusajs/locking-redis 0.0.2-snapshot-20241013171145 → 1.0.0-rc-20241015170251
Sign up to get free protection for your applications and to get access to all the features.
@@ -1,17 +1,20 @@
|
|
1
1
|
import { ILockingProvider } from "@medusajs/types";
|
2
|
+
import { RedisCacheModuleOptions } from "../types";
|
2
3
|
import { Redis } from "ioredis";
|
3
|
-
declare
|
4
|
-
export declare class RedisLockingProvider extends RedisLockingProvider_base implements ILockingProvider {
|
4
|
+
export declare class RedisLockingProvider implements ILockingProvider {
|
5
5
|
static identifier: string;
|
6
6
|
protected redisClient: Redis & {
|
7
7
|
acquireLock: (key: string, ownerId: string, ttl: number, awaitQueue?: boolean) => Promise<number>;
|
8
8
|
releaseLock: (key: string, ownerId: string) => Promise<number>;
|
9
9
|
};
|
10
10
|
protected keyNamePrefix: string;
|
11
|
+
protected waitLockingTimeout: number;
|
12
|
+
protected defaultRetryInterval: number;
|
13
|
+
protected maximumRetryInterval: number;
|
11
14
|
constructor({ redisClient, prefix }: {
|
12
15
|
redisClient: any;
|
13
16
|
prefix: any;
|
14
|
-
});
|
17
|
+
}, options: RedisCacheModuleOptions);
|
15
18
|
private getKeyName;
|
16
19
|
execute<T>(keys: string | string[], job: () => Promise<T>, args?: {
|
17
20
|
timeout?: number;
|
@@ -36,5 +39,4 @@ export declare class RedisLockingProvider extends RedisLockingProvider_base impl
|
|
36
39
|
}): Promise<void>;
|
37
40
|
private getTimeout;
|
38
41
|
}
|
39
|
-
export {};
|
40
42
|
//# sourceMappingURL=redis-lock.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"redis-lock.d.ts","sourceRoot":"","sources":["../../src/services/redis-lock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA
|
1
|
+
{"version":3,"file":"redis-lock.d.ts","sourceRoot":"","sources":["../../src/services/redis-lock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAG/B,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,MAAM,CAAC,UAAU,SAAkB;IAEnC,SAAS,CAAC,WAAW,EAAE,KAAK,GAAG;QAC7B,WAAW,EAAE,CACX,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,OAAO,KACjB,OAAO,CAAC,MAAM,CAAC,CAAA;QACpB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;KAC/D,CAAA;IACD,SAAS,CAAC,aAAa,EAAE,MAAM,CAAA;IAC/B,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAI;IACxC,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAI;IAC1C,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAM;gBAEhC,EAAE,WAAW,EAAE,MAAM,EAAE;;;KAAA,EAAE,OAAO,EAAE,uBAAuB;IA0ErE,OAAO,CAAC,UAAU;IAIZ,OAAO,CAAC,CAAC,EACb,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACrB,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,GACA,OAAO,CAAC,CAAC,CAAC;IA8BP,OAAO,CACX,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EACvB,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,UAAU,CAAC,EAAE,OAAO,CAAA;KACrB,GACA,OAAO,CAAC,IAAI,CAAC;IAIV,QAAQ,CACZ,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EACvB,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,UAAU,CAAC,EAAE,OAAO,CAAA;KACrB,EACD,iBAAiB,CAAC,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,GACzC,OAAO,CAAC,IAAI,CAAC;IAqDV,OAAO,CACX,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EACvB,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KACxB,GACA,OAAO,CAAC,OAAO,CAAC;IAeb,UAAU,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAwCrD,UAAU;CAUzB"}
|
@@ -3,11 +3,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RedisLockingProvider = void 0;
|
4
4
|
const utils_1 = require("@medusajs/framework/utils");
|
5
5
|
const promises_1 = require("node:timers/promises");
|
6
|
-
class RedisLockingProvider
|
7
|
-
constructor({ redisClient, prefix }) {
|
8
|
-
|
6
|
+
class RedisLockingProvider {
|
7
|
+
constructor({ redisClient, prefix }, options) {
|
8
|
+
this.waitLockingTimeout = 5;
|
9
|
+
this.defaultRetryInterval = 5;
|
10
|
+
this.maximumRetryInterval = 200;
|
9
11
|
this.redisClient = redisClient;
|
10
12
|
this.keyNamePrefix = prefix ?? "medusa_lock:";
|
13
|
+
if (!isNaN(+options?.waitLockingTimeout)) {
|
14
|
+
this.waitLockingTimeout = +options.waitLockingTimeout;
|
15
|
+
}
|
16
|
+
if (!isNaN(+options?.defaultRetryInterval)) {
|
17
|
+
this.defaultRetryInterval = +options.defaultRetryInterval;
|
18
|
+
}
|
19
|
+
if (!isNaN(+options?.maximumRetryInterval)) {
|
20
|
+
this.maximumRetryInterval = +options.maximumRetryInterval;
|
21
|
+
}
|
11
22
|
// Define the custom command for acquiring locks
|
12
23
|
this.redisClient.defineCommand("acquireLock", {
|
13
24
|
numberOfKeys: 1,
|
@@ -17,22 +28,36 @@ class RedisLockingProvider extends (0, utils_1.MedusaService)({}) {
|
|
17
28
|
local ttl = tonumber(ARGV[2])
|
18
29
|
local awaitQueue = ARGV[3] == 'true'
|
19
30
|
|
20
|
-
local
|
31
|
+
local setArgs = {key, ownerId, 'NX'}
|
32
|
+
if ttl > 0 then
|
33
|
+
table.insert(setArgs, 'EX')
|
34
|
+
table.insert(setArgs, ttl)
|
35
|
+
end
|
36
|
+
|
37
|
+
local setResult = redis.call('SET', unpack(setArgs))
|
21
38
|
|
22
39
|
if setResult then
|
23
|
-
return 1
|
24
|
-
elseif not awaitQueue then
|
25
|
-
-- Key already exists; retrieve the current ownerId
|
26
|
-
local currentOwnerId = redis.call('GET', key)
|
27
|
-
if currentOwnerId == ownerId then
|
28
|
-
redis.call('SET', key, ownerId, 'EX', ttl, 'XX')
|
29
40
|
return 1
|
30
|
-
|
31
|
-
|
32
|
-
|
41
|
+
elseif not awaitQueue then
|
42
|
+
-- Key already exists; retrieve the current ownerId
|
43
|
+
local currentOwnerId = redis.call('GET', key)
|
44
|
+
if currentOwnerId == '*' then
|
45
|
+
return 0
|
46
|
+
elseif currentOwnerId == ownerId then
|
47
|
+
setArgs = {key, ownerId, 'XX'}
|
48
|
+
if ttl > 0 then
|
49
|
+
table.insert(setArgs, 'EX')
|
50
|
+
table.insert(setArgs, ttl)
|
51
|
+
end
|
52
|
+
redis.call('SET', unpack(setArgs))
|
53
|
+
return 1
|
54
|
+
else
|
55
|
+
return 0
|
56
|
+
end
|
33
57
|
else
|
34
|
-
|
58
|
+
return 0
|
35
59
|
end
|
60
|
+
|
36
61
|
`,
|
37
62
|
});
|
38
63
|
// Define the custom command for releasing locks
|
@@ -54,7 +79,7 @@ class RedisLockingProvider extends (0, utils_1.MedusaService)({}) {
|
|
54
79
|
return `${this.keyNamePrefix}${key}`;
|
55
80
|
}
|
56
81
|
async execute(keys, job, args) {
|
57
|
-
const timeout = Math.max(args?.timeout ??
|
82
|
+
const timeout = Math.max(args?.timeout ?? this.waitLockingTimeout, 1);
|
58
83
|
const timeoutSeconds = Number.isNaN(timeout) ? 1 : timeout;
|
59
84
|
const cancellationToken = { cancelled: false };
|
60
85
|
const promises = [];
|
@@ -63,6 +88,7 @@ class RedisLockingProvider extends (0, utils_1.MedusaService)({}) {
|
|
63
88
|
}
|
64
89
|
promises.push(this.acquire_(keys, {
|
65
90
|
awaitQueue: true,
|
91
|
+
expire: args?.timeout ? timeoutSeconds : 0,
|
66
92
|
}, cancellationToken));
|
67
93
|
await Promise.race(promises);
|
68
94
|
try {
|
@@ -77,35 +103,39 @@ class RedisLockingProvider extends (0, utils_1.MedusaService)({}) {
|
|
77
103
|
}
|
78
104
|
async acquire_(keys, args, cancellationToken) {
|
79
105
|
keys = Array.isArray(keys) ? keys : [keys];
|
80
|
-
const timeout = Math.max(args?.expire ??
|
106
|
+
const timeout = Math.max(args?.expire ?? this.waitLockingTimeout, 1);
|
81
107
|
const timeoutSeconds = Number.isNaN(timeout) ? 1 : timeout;
|
108
|
+
let retryTimes = 0;
|
82
109
|
const ownerId = args?.ownerId ?? "*";
|
83
110
|
const awaitQueue = args?.awaitQueue ?? false;
|
84
111
|
const acquirePromises = keys.map(async (key) => {
|
112
|
+
const errMessage = `Failed to acquire lock for key "${key}"`;
|
85
113
|
const keyName = this.getKeyName(key);
|
86
114
|
const acquireLock = async () => {
|
87
115
|
while (true) {
|
88
116
|
if (cancellationToken?.cancelled) {
|
89
|
-
|
117
|
+
throw new Error(errMessage);
|
90
118
|
}
|
91
|
-
const result = await this.redisClient.acquireLock(keyName, ownerId, timeoutSeconds, awaitQueue);
|
119
|
+
const result = await this.redisClient.acquireLock(keyName, ownerId, args?.expire ? timeoutSeconds : 0, awaitQueue);
|
92
120
|
if (result === 1) {
|
93
121
|
break;
|
94
122
|
}
|
95
123
|
else {
|
96
124
|
if (awaitQueue) {
|
97
125
|
// Wait for a short period before retrying
|
98
|
-
await (0, promises_1.setTimeout)(
|
126
|
+
await (0, promises_1.setTimeout)(Math.min(this.defaultRetryInterval +
|
127
|
+
(retryTimes / 10) * this.defaultRetryInterval, this.maximumRetryInterval));
|
128
|
+
retryTimes++;
|
99
129
|
}
|
100
130
|
else {
|
101
|
-
throw new Error(
|
131
|
+
throw new Error(errMessage);
|
102
132
|
}
|
103
133
|
}
|
104
134
|
}
|
105
135
|
};
|
106
136
|
await acquireLock();
|
107
137
|
});
|
108
|
-
await
|
138
|
+
await (0, utils_1.promiseAll)(acquirePromises);
|
109
139
|
}
|
110
140
|
async release(keys, args) {
|
111
141
|
const ownerId = args?.ownerId ?? "*";
|
@@ -115,7 +145,7 @@ class RedisLockingProvider extends (0, utils_1.MedusaService)({}) {
|
|
115
145
|
const result = await this.redisClient.releaseLock(keyName, ownerId);
|
116
146
|
return result === 1;
|
117
147
|
});
|
118
|
-
const results = await
|
148
|
+
const results = await (0, utils_1.promiseAll)(releasePromises);
|
119
149
|
return results.every((released) => released);
|
120
150
|
}
|
121
151
|
async releaseAll(args) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"redis-lock.js","sourceRoot":"","sources":["../../src/services/redis-lock.ts"],"names":[],"mappings":";;;AAAA,
|
1
|
+
{"version":3,"file":"redis-lock.js","sourceRoot":"","sources":["../../src/services/redis-lock.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
@@ -20,5 +20,20 @@ export type RedisCacheModuleOptions = {
|
|
20
20
|
* @default `medusa_lock:`
|
21
21
|
*/
|
22
22
|
namespace?: string;
|
23
|
+
/**
|
24
|
+
* Time to wait for lock (in seconds)
|
25
|
+
* @default 5
|
26
|
+
*/
|
27
|
+
waitLockingTimeout?: number;
|
28
|
+
/**
|
29
|
+
* Default retry interval (in milliseconds)
|
30
|
+
* @default 5
|
31
|
+
*/
|
32
|
+
defaultRetryInterval?: number;
|
33
|
+
/**
|
34
|
+
* Maximum retry interval (in milliseconds)
|
35
|
+
* @default 200
|
36
|
+
*/
|
37
|
+
maximumRetryInterval?: number;
|
23
38
|
};
|
24
39
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAE3B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAE3B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAE7B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B,CAAA"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@medusajs/locking-redis",
|
3
|
-
"version": "0.0
|
3
|
+
"version": "1.0.0-rc-20241015170251",
|
4
4
|
"description": "Redis Lock for Medusa",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"repository": {
|
@@ -20,7 +20,7 @@
|
|
20
20
|
"author": "Medusa",
|
21
21
|
"license": "MIT",
|
22
22
|
"devDependencies": {
|
23
|
-
"@medusajs/framework": "0.0
|
23
|
+
"@medusajs/framework": "1.0.0-rc-20241015170251",
|
24
24
|
"@swc/core": "^1.7.28",
|
25
25
|
"@swc/jest": "^0.2.36",
|
26
26
|
"jest": "^29.7.0",
|
@@ -28,7 +28,7 @@
|
|
28
28
|
"typescript": "^5.6.2"
|
29
29
|
},
|
30
30
|
"peerDependencies": {
|
31
|
-
"@medusajs/framework": "0.0
|
31
|
+
"@medusajs/framework": "1.0.0-rc-20241015170251"
|
32
32
|
},
|
33
33
|
"dependencies": {
|
34
34
|
"ioredis": "^5.4.1"
|