murlock 4.4.1 → 5.1.0

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.
@@ -35,12 +35,15 @@ let MurLockService = MurLockService_1 = class MurLockService {
35
35
  this.options = options;
36
36
  this.asyncStorageService = asyncStorageService;
37
37
  this.logger = new common_1.Logger(MurLockService_1.name);
38
+ this.scriptShas = {};
38
39
  }
39
40
  onModuleInit() {
40
41
  return __awaiter(this, void 0, void 0, function* () {
42
+ this.validateOptions();
41
43
  try {
42
44
  this.lockScript = yield (0, promises_1.readFile)((0, path_1.join)(__dirname, './lua/lock.lua'), 'utf8');
43
45
  this.unlockScript = yield (0, promises_1.readFile)((0, path_1.join)(__dirname, './lua/unlock.lua'), 'utf8');
46
+ this.extendScript = yield (0, promises_1.readFile)((0, path_1.join)(__dirname, './lua/extend.lua'), 'utf8');
44
47
  }
45
48
  catch (error) {
46
49
  throw new exceptions_1.MurLockException(`Failed to load Lua scripts: ${error.message}`);
@@ -53,6 +56,7 @@ let MurLockService = MurLockService_1 = class MurLockService {
53
56
  this.registerRedisErrorHandlers();
54
57
  try {
55
58
  yield this.redisClient.connect();
59
+ yield this.loadScripts();
56
60
  }
57
61
  catch (error) {
58
62
  this.log('error', `Failed to connect to Redis: ${error.message}`);
@@ -70,10 +74,32 @@ let MurLockService = MurLockService_1 = class MurLockService {
70
74
  }
71
75
  });
72
76
  }
77
+ validateOptions() {
78
+ const { maxAttempts, wait, extendInterval } = this.options;
79
+ if (!Number.isFinite(maxAttempts) || maxAttempts < 1) {
80
+ throw new exceptions_1.MurLockException(`Invalid MurLock option 'maxAttempts': ${maxAttempts} (must be an integer >= 1).`);
81
+ }
82
+ if (!Number.isFinite(wait) || wait < 0) {
83
+ throw new exceptions_1.MurLockException(`Invalid MurLock option 'wait': ${wait} (must be a number >= 0).`);
84
+ }
85
+ if (extendInterval !== undefined &&
86
+ (!Number.isFinite(extendInterval) || extendInterval <= 0)) {
87
+ throw new exceptions_1.MurLockException(`Invalid MurLock option 'extendInterval': ${extendInterval} (must be a number > 0).`);
88
+ }
89
+ }
73
90
  sleep(ms) {
74
91
  return new Promise((resolve) => setTimeout(resolve, ms));
75
92
  }
93
+ withJitter(delay) {
94
+ if (!this.options.jitter) {
95
+ return delay;
96
+ }
97
+ return Math.floor(delay / 2 + Math.random() * (delay / 2));
98
+ }
76
99
  log(level, message, context) {
100
+ if (this.options.logLevel === 'none') {
101
+ return;
102
+ }
77
103
  const levels = [
78
104
  'debug',
79
105
  'log',
@@ -84,6 +110,76 @@ let MurLockService = MurLockService_1 = class MurLockService {
84
110
  this.logger[level](message, context);
85
111
  }
86
112
  }
113
+ loadScripts() {
114
+ return __awaiter(this, void 0, void 0, function* () {
115
+ try {
116
+ this.scriptShas.lock = (yield this.redisClient.sendCommand([
117
+ 'SCRIPT',
118
+ 'LOAD',
119
+ this.lockScript,
120
+ ]));
121
+ this.scriptShas.unlock = (yield this.redisClient.sendCommand([
122
+ 'SCRIPT',
123
+ 'LOAD',
124
+ this.unlockScript,
125
+ ]));
126
+ this.scriptShas.extend = (yield this.redisClient.sendCommand([
127
+ 'SCRIPT',
128
+ 'LOAD',
129
+ this.extendScript,
130
+ ]));
131
+ }
132
+ catch (error) {
133
+ this.log('warn', `MurLock could not preload Lua scripts (will fall back to EVAL): ${error.message}`);
134
+ }
135
+ });
136
+ }
137
+ evalScript(name, script, keys, args) {
138
+ return __awaiter(this, void 0, void 0, function* () {
139
+ const numkeys = keys.length.toString();
140
+ const sha = this.scriptShas[name];
141
+ if (sha) {
142
+ try {
143
+ return yield this.redisClient.sendCommand([
144
+ 'EVALSHA',
145
+ sha,
146
+ numkeys,
147
+ ...keys,
148
+ ...args,
149
+ ]);
150
+ }
151
+ catch (error) {
152
+ if (!/NOSCRIPT/i.test(String(error === null || error === void 0 ? void 0 : error.message))) {
153
+ throw error;
154
+ }
155
+ try {
156
+ const fresh = (yield this.redisClient.sendCommand([
157
+ 'SCRIPT',
158
+ 'LOAD',
159
+ script,
160
+ ]));
161
+ this.scriptShas[name] = fresh;
162
+ return yield this.redisClient.sendCommand([
163
+ 'EVALSHA',
164
+ fresh,
165
+ numkeys,
166
+ ...keys,
167
+ ...args,
168
+ ]);
169
+ }
170
+ catch (_a) {
171
+ }
172
+ }
173
+ }
174
+ return yield this.redisClient.sendCommand([
175
+ 'EVAL',
176
+ script,
177
+ numkeys,
178
+ ...keys,
179
+ ...args,
180
+ ]);
181
+ });
182
+ }
87
183
  lock(lockKey, releaseTime, clientId, wait) {
88
184
  return __awaiter(this, void 0, void 0, function* () {
89
185
  this.log('debug', `MurLock Client ID is ${clientId}`);
@@ -95,32 +191,29 @@ let MurLockService = MurLockService_1 = class MurLockService {
95
191
  throw new exceptions_1.MurLockException(`Failed to obtain lock for key ${lockKey} after ${this.options.maxAttempts} attempts.`);
96
192
  }
97
193
  try {
98
- const isLockSuccessful = yield this.redisClient.sendCommand([
99
- 'EVAL',
100
- this.lockScript,
101
- '1',
102
- lockKey,
103
- clientId,
104
- releaseTime.toString(),
105
- ]);
194
+ const isLockSuccessful = yield this.evalScript('lock', this.lockScript, [lockKey], [clientId, releaseTime.toString()]);
106
195
  if (isLockSuccessful === 1) {
107
196
  this.log('log', `Successfully obtained lock for key ${lockKey}`);
108
197
  return true;
109
198
  }
110
199
  else {
111
- const delay = wait
200
+ const baseDelay = wait
112
201
  ? typeof wait === 'function'
113
202
  ? wait(this.options.maxAttempts - attemptsRemaining + 1)
114
203
  : wait
115
204
  : this.options.wait *
116
205
  (this.options.maxAttempts - attemptsRemaining + 1);
206
+ const delay = this.withJitter(baseDelay);
117
207
  this.log('warn', `Failed to obtain lock for key ${lockKey}, retrying in ${delay} ms...`);
118
208
  yield this.sleep(delay);
119
209
  return attemptLock(attemptsRemaining - 1);
120
210
  }
121
211
  }
122
212
  catch (error) {
123
- throw new exceptions_1.MurLockException(`Unexpected error when trying to obtain lock for key ${lockKey}: ${error.message}`);
213
+ if (error instanceof exceptions_1.MurLockException) {
214
+ throw error;
215
+ }
216
+ throw new exceptions_1.MurLockRedisException(`Unexpected error when trying to obtain lock for key ${lockKey}: ${error.message}`);
124
217
  }
125
218
  });
126
219
  return attemptLock(this.options.maxAttempts);
@@ -128,13 +221,7 @@ let MurLockService = MurLockService_1 = class MurLockService {
128
221
  }
129
222
  unlock(lockKey, clientId) {
130
223
  return __awaiter(this, void 0, void 0, function* () {
131
- const result = yield this.redisClient.sendCommand([
132
- 'EVAL',
133
- this.unlockScript,
134
- '1',
135
- lockKey,
136
- clientId,
137
- ]);
224
+ const result = yield this.evalScript('unlock', this.unlockScript, [lockKey], [clientId]);
138
225
  if (result === 0) {
139
226
  if (!this.options.ignoreUnlockFail) {
140
227
  throw new exceptions_1.MurLockException(`Failed to release lock for key ${lockKey}`);
@@ -145,6 +232,39 @@ let MurLockService = MurLockService_1 = class MurLockService {
145
232
  }
146
233
  });
147
234
  }
235
+ extendLock(lockKey, clientId, releaseTime) {
236
+ return __awaiter(this, void 0, void 0, function* () {
237
+ const result = yield this.evalScript('extend', this.extendScript, [lockKey], [clientId, releaseTime.toString()]);
238
+ return result === 1;
239
+ });
240
+ }
241
+ startWatchdog(lockKey, clientId, releaseTime) {
242
+ if (!this.options.autoExtend) {
243
+ return () => { };
244
+ }
245
+ const interval = this.options.extendInterval && this.options.extendInterval > 0
246
+ ? this.options.extendInterval
247
+ : Math.max(1, Math.floor(releaseTime / 3));
248
+ const timer = setInterval(() => __awaiter(this, void 0, void 0, function* () {
249
+ try {
250
+ const extended = yield this.extendLock(lockKey, clientId, releaseTime);
251
+ if (extended) {
252
+ this.log('debug', `Watchdog extended lock for key ${lockKey}`);
253
+ }
254
+ else {
255
+ this.log('warn', `Watchdog could not extend lock for key ${lockKey} (ownership lost); stopping watchdog.`);
256
+ clearInterval(timer);
257
+ }
258
+ }
259
+ catch (error) {
260
+ this.log('error', `Watchdog error while extending lock for key ${lockKey}: ${error.message}`);
261
+ }
262
+ }), interval);
263
+ if (typeof timer.unref === 'function') {
264
+ timer.unref();
265
+ }
266
+ return () => clearInterval(timer);
267
+ }
148
268
  acquireLock(lockKey, clientId, releaseTime, wait) {
149
269
  return __awaiter(this, void 0, void 0, function* () {
150
270
  let isLockSuccessful = false;
@@ -152,6 +272,9 @@ let MurLockService = MurLockService_1 = class MurLockService {
152
272
  isLockSuccessful = yield this.lock(lockKey, releaseTime, clientId, wait);
153
273
  }
154
274
  catch (error) {
275
+ if (error instanceof exceptions_1.MurLockException) {
276
+ throw error;
277
+ }
155
278
  throw new exceptions_1.MurLockException(`Failed to acquire lock for key ${lockKey}: ${error.message}`);
156
279
  }
157
280
  if (!isLockSuccessful) {
@@ -165,6 +288,9 @@ let MurLockService = MurLockService_1 = class MurLockService {
165
288
  yield this.unlock(lockKey, clientId);
166
289
  }
167
290
  catch (error) {
291
+ if (error instanceof exceptions_1.MurLockException) {
292
+ throw error;
293
+ }
168
294
  throw new exceptions_1.MurLockException(`Failed to release lock for key ${lockKey}: ${error.message}`);
169
295
  }
170
296
  });
@@ -180,24 +306,80 @@ let MurLockService = MurLockService_1 = class MurLockService {
180
306
  wait = waitOrFn;
181
307
  operation = fn;
182
308
  }
183
- this.asyncStorageService.registerContext();
184
- this.asyncStorageService.setClientID('clientId', (0, utils_1.generateUuid)());
185
- const clientId = this.asyncStorageService.get('clientId');
186
- yield this.acquireLock(lockKey, clientId, releaseTime, wait);
309
+ if (!Number.isFinite(releaseTime) || releaseTime <= 0) {
310
+ throw new exceptions_1.MurLockException(`Invalid releaseTime for key ${lockKey}: ${releaseTime} (must be > 0).`);
311
+ }
312
+ if (!this.options.reentrant) {
313
+ const clientId = (0, utils_1.generateUuid)();
314
+ yield this.acquireLock(lockKey, clientId, releaseTime, wait);
315
+ const stopWatchdog = this.startWatchdog(lockKey, clientId, releaseTime);
316
+ try {
317
+ return yield operation();
318
+ }
319
+ finally {
320
+ stopWatchdog();
321
+ yield this.releaseLock(lockKey, clientId);
322
+ }
323
+ }
324
+ const existing = this.asyncStorageService.getContext();
325
+ if (existing) {
326
+ return this.runReentrant(existing, lockKey, releaseTime, wait, operation);
327
+ }
328
+ const context = {
329
+ clientId: (0, utils_1.generateUuid)(),
330
+ holds: new Map(),
331
+ };
332
+ return this.asyncStorageService.run(context, () => this.runReentrant(context, lockKey, releaseTime, wait, operation));
333
+ });
334
+ }
335
+ runReentrant(context, lockKey, releaseTime, wait, operation) {
336
+ var _a, _b, _c;
337
+ return __awaiter(this, void 0, void 0, function* () {
338
+ const depth = (_a = context.holds.get(lockKey)) !== null && _a !== void 0 ? _a : 0;
339
+ if (depth > 0) {
340
+ context.holds.set(lockKey, depth + 1);
341
+ try {
342
+ return yield operation();
343
+ }
344
+ finally {
345
+ const current = (_b = context.holds.get(lockKey)) !== null && _b !== void 0 ? _b : 1;
346
+ if (current <= 1) {
347
+ context.holds.delete(lockKey);
348
+ }
349
+ else {
350
+ context.holds.set(lockKey, current - 1);
351
+ }
352
+ }
353
+ }
354
+ yield this.acquireLock(lockKey, context.clientId, releaseTime, wait);
355
+ context.holds.set(lockKey, 1);
356
+ const stopWatchdog = this.startWatchdog(lockKey, context.clientId, releaseTime);
187
357
  try {
188
358
  return yield operation();
189
359
  }
190
360
  finally {
191
- yield this.releaseLock(lockKey, clientId);
361
+ const current = (_c = context.holds.get(lockKey)) !== null && _c !== void 0 ? _c : 1;
362
+ if (current <= 1) {
363
+ context.holds.delete(lockKey);
364
+ stopWatchdog();
365
+ yield this.releaseLock(lockKey, context.clientId);
366
+ }
367
+ else {
368
+ context.holds.set(lockKey, current - 1);
369
+ }
192
370
  }
193
371
  });
194
372
  }
195
373
  registerRedisErrorHandlers() {
196
374
  this.redisClient.on('error', (err) => {
197
375
  this.log('error', `MurLock Redis Client Error: ${err.message}`);
198
- if (this.options.failFastOnRedisError) {
199
- this.log('error', 'MurLock Redis entering fail-fast shutdown due to Redis error.');
200
- process.exit(1);
376
+ if (typeof this.options.onRedisError === 'function') {
377
+ try {
378
+ this.options.onRedisError(err);
379
+ }
380
+ catch (callbackError) {
381
+ this.log('error', `MurLock onRedisError callback threw: ${callbackError.message}`);
382
+ }
201
383
  }
202
384
  });
203
385
  this.redisClient.on('reconnecting', () => {
@@ -214,26 +396,20 @@ let MurLockService = MurLockService_1 = class MurLockService {
214
396
  return __awaiter(this, void 0, void 0, function* () {
215
397
  while (true) {
216
398
  try {
217
- const isLockSuccessful = yield this.redisClient.sendCommand([
218
- 'EVAL',
219
- this.lockScript,
220
- '1',
221
- lockKey,
222
- clientId,
223
- releaseTime.toString(),
224
- ]);
399
+ const isLockSuccessful = yield this.evalScript('lock', this.lockScript, [lockKey], [clientId, releaseTime.toString()]);
225
400
  if (isLockSuccessful === 1) {
226
401
  this.log('log', `Successfully obtained lock for key ${lockKey} in blocking mode`);
227
402
  return true;
228
403
  }
229
404
  else {
230
- this.log('warn', `Lock busy for key ${lockKey}, waiting ${this.options.wait} ms before next attempt (blocking mode)...`);
231
- yield this.sleep(this.options.wait);
405
+ const delay = this.withJitter(this.options.wait);
406
+ this.log('warn', `Lock busy for key ${lockKey}, waiting ${delay} ms before next attempt (blocking mode)...`);
407
+ yield this.sleep(delay);
232
408
  }
233
409
  }
234
410
  catch (error) {
235
411
  this.log('error', `Unexpected error in blocking lock for key ${lockKey}: ${error.message}`);
236
- yield this.sleep(this.options.wait);
412
+ yield this.sleep(this.withJitter(this.options.wait));
237
413
  }
238
414
  }
239
415
  });
@@ -1 +1 @@
1
- {"version":3,"file":"murlock.service.js","sourceRoot":"","sources":["../lib/murlock.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"murlock.service.js","sourceRoot":"","sources":["../lib/murlock.service.ts"],"names":[],"mappings":"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"}