@@ -15,7 +15,7 @@ export type ReleaseConcurrencyQueueRetryOptions = {
15
15
16
16
export type ReleaseConcurrencyQueueOptions < T > = {
17
17
redis : RedisOptions ;
18
- executor : ( releaseQueue : T , runId : string ) => Promise < void > ;
18
+ executor : ( releaseQueue : T , releaserId : string ) => Promise < void > ;
19
19
keys : {
20
20
fromDescriptor : ( releaseQueue : T ) => string ;
21
21
toDescriptor : ( releaseQueue : string ) => T ;
@@ -89,7 +89,7 @@ export class ReleaseConcurrencyTokenBucketQueue<T> {
89
89
* If there is no token available, then we'll add the operation to a queue
90
90
* and wait until the token is available.
91
91
*/
92
- public async attemptToRelease ( releaseQueueDescriptor : T , runId : string ) {
92
+ public async attemptToRelease ( releaseQueueDescriptor : T , releaserId : string ) {
93
93
const maxTokens = await this . #callMaxTokens( releaseQueueDescriptor ) ;
94
94
95
95
if ( maxTokens === 0 ) {
@@ -104,13 +104,13 @@ export class ReleaseConcurrencyTokenBucketQueue<T> {
104
104
this . #queueKey( releaseQueue ) ,
105
105
this . #metadataKey( releaseQueue ) ,
106
106
releaseQueue ,
107
- runId ,
107
+ releaserId ,
108
108
String ( maxTokens ) ,
109
109
String ( Date . now ( ) )
110
110
) ;
111
111
112
112
if ( ! ! result ) {
113
- await this . #callExecutor( releaseQueueDescriptor , runId , {
113
+ await this . #callExecutor( releaseQueueDescriptor , releaserId , {
114
114
retryCount : 0 ,
115
115
lastAttempt : Date . now ( ) ,
116
116
} ) ;
@@ -161,28 +161,28 @@ export class ReleaseConcurrencyTokenBucketQueue<T> {
161
161
}
162
162
163
163
await Promise . all (
164
- result . map ( ( [ queue , runId , metadata ] ) => {
164
+ result . map ( ( [ queue , releaserId , metadata ] ) => {
165
165
const itemMetadata = QueueItemMetadata . parse ( JSON . parse ( metadata ) ) ;
166
166
const releaseQueueDescriptor = this . keys . toDescriptor ( queue ) ;
167
- return this . #callExecutor( releaseQueueDescriptor , runId , itemMetadata ) ;
167
+ return this . #callExecutor( releaseQueueDescriptor , releaserId , itemMetadata ) ;
168
168
} )
169
169
) ;
170
170
171
171
return true ;
172
172
}
173
173
174
- async #callExecutor( releaseQueueDescriptor : T , runId : string , metadata : QueueItemMetadata ) {
174
+ async #callExecutor( releaseQueueDescriptor : T , releaserId : string , metadata : QueueItemMetadata ) {
175
175
try {
176
- this . logger . info ( "Executing run:" , { releaseQueueDescriptor, runId } ) ;
176
+ this . logger . info ( "Executing run:" , { releaseQueueDescriptor, releaserId } ) ;
177
177
178
- await this . options . executor ( releaseQueueDescriptor , runId ) ;
178
+ await this . options . executor ( releaseQueueDescriptor , releaserId ) ;
179
179
} catch ( error ) {
180
180
this . logger . error ( "Error executing run:" , { error } ) ;
181
181
182
182
if ( metadata . retryCount >= this . maxRetries ) {
183
183
this . logger . error ( "Max retries reached:" , {
184
184
releaseQueueDescriptor,
185
- runId ,
185
+ releaserId ,
186
186
retryCount : metadata . retryCount ,
187
187
} ) ;
188
188
@@ -194,10 +194,10 @@ export class ReleaseConcurrencyTokenBucketQueue<T> {
194
194
this . #queueKey( releaseQueue ) ,
195
195
this . #metadataKey( releaseQueue ) ,
196
196
releaseQueue ,
197
- runId
197
+ releaserId
198
198
) ;
199
199
200
- this . logger . info ( "Returned token:" , { releaseQueueDescriptor, runId } ) ;
200
+ this . logger . info ( "Returned token:" , { releaseQueueDescriptor, releaserId } ) ;
201
201
202
202
return ;
203
203
}
@@ -216,7 +216,7 @@ export class ReleaseConcurrencyTokenBucketQueue<T> {
216
216
this . #queueKey( releaseQueue ) ,
217
217
this . #metadataKey( releaseQueue ) ,
218
218
releaseQueue ,
219
- runId ,
219
+ releaserId ,
220
220
JSON . stringify ( updatedMetadata ) ,
221
221
this . #calculateBackoffScore( updatedMetadata )
222
222
) ;
@@ -282,7 +282,7 @@ local queueKey = KEYS[3]
282
282
local metadataKey = KEYS[4]
283
283
284
284
local releaseQueue = ARGV[1]
285
- local runId = ARGV[2]
285
+ local releaserId = ARGV[2]
286
286
local maxTokens = tonumber(ARGV[3])
287
287
local score = ARGV[4]
288
288
@@ -292,10 +292,10 @@ local currentTokens = tonumber(redis.call("GET", bucketKey) or maxTokens)
292
292
-- If we have enough tokens, then consume them
293
293
if currentTokens >= 1 then
294
294
redis.call("SET", bucketKey, currentTokens - 1)
295
- redis.call("ZREM", queueKey, runId )
295
+ redis.call("ZREM", queueKey, releaserId )
296
296
297
297
-- Clean up metadata when successfully consuming
298
- redis.call("HDEL", metadataKey, runId )
298
+ redis.call("HDEL", metadataKey, releaserId )
299
299
300
300
-- Get queue length after removing the item
301
301
local queueLength = redis.call("ZCARD", queueKey)
@@ -311,14 +311,14 @@ if currentTokens >= 1 then
311
311
end
312
312
313
313
-- If we don't have enough tokens, then we need to add the operation to the queue
314
- redis.call("ZADD", queueKey, score, runId )
314
+ redis.call("ZADD", queueKey, score, releaserId )
315
315
316
316
-- Initialize or update metadata
317
317
local metadata = cjson.encode({
318
318
retryCount = 0,
319
319
lastAttempt = tonumber(score)
320
320
})
321
- redis.call("HSET", metadataKey, runId , metadata)
321
+ redis.call("HSET", metadataKey, releaserId , metadata)
322
322
323
323
-- Remove from the master queue
324
324
redis.call("ZREM", masterQueuesKey, releaseQueue)
@@ -400,14 +400,14 @@ redis.call("SET", bucketKey, currentTokens - itemsToProcess)
400
400
401
401
-- Remove the items from the queue and add to results
402
402
for i = 1, itemsToProcess do
403
- local runId = items[i]
404
- redis.call("ZREM", queueKey, runId )
403
+ local releaserId = items[i]
404
+ redis.call("ZREM", queueKey, releaserId )
405
405
406
406
-- Get metadata before removing it
407
- local metadata = redis.call("HGET", metadataKey, runId )
408
- redis.call("HDEL", metadataKey, runId )
407
+ local metadata = redis.call("HGET", metadataKey, releaserId )
408
+ redis.call("HDEL", metadataKey, releaserId )
409
409
410
- table.insert(results, { queueName, runId , metadata })
410
+ table.insert(results, { queueName, releaserId , metadata })
411
411
end
412
412
413
413
-- Get remaining queue length
@@ -434,7 +434,7 @@ local queueKey = KEYS[3]
434
434
local metadataKey = KEYS[4]
435
435
436
436
local releaseQueue = ARGV[1]
437
- local runId = ARGV[2]
437
+ local releaserId = ARGV[2]
438
438
local metadata = ARGV[3]
439
439
local score = ARGV[4]
440
440
@@ -444,10 +444,10 @@ local remainingTokens = currentTokens + 1
444
444
redis.call("SET", bucketKey, remainingTokens)
445
445
446
446
-- Add the item back to the queue
447
- redis.call("ZADD", queueKey, score, runId )
447
+ redis.call("ZADD", queueKey, score, releaserId )
448
448
449
449
-- Add the metadata back to the item
450
- redis.call("HSET", metadataKey, runId , metadata)
450
+ redis.call("HSET", metadataKey, releaserId , metadata)
451
451
452
452
-- Update the master queue
453
453
local queueLength = redis.call("ZCARD", queueKey)
@@ -470,15 +470,15 @@ local queueKey = KEYS[3]
470
470
local metadataKey = KEYS[4]
471
471
472
472
local releaseQueue = ARGV[1]
473
- local runId = ARGV[2]
473
+ local releaserId = ARGV[2]
474
474
475
475
-- Return the token to the bucket
476
476
local currentTokens = tonumber(redis.call("GET", bucketKey))
477
477
local remainingTokens = currentTokens + 1
478
478
redis.call("SET", bucketKey, remainingTokens)
479
479
480
480
-- Clean up metadata
481
- redis.call("HDEL", metadataKey, runId )
481
+ redis.call("HDEL", metadataKey, releaserId )
482
482
483
483
-- Update the master queue based on remaining queue length
484
484
local queueLength = redis.call("ZCARD", queueKey)
@@ -502,7 +502,7 @@ declare module "@internal/redis" {
502
502
queueKey : string ,
503
503
metadataKey : string ,
504
504
releaseQueue : string ,
505
- runId : string ,
505
+ releaserId : string ,
506
506
maxTokens : string ,
507
507
score : string ,
508
508
callback ?: Callback < string >
@@ -532,7 +532,7 @@ declare module "@internal/redis" {
532
532
queueKey : string ,
533
533
metadataKey : string ,
534
534
releaseQueue : string ,
535
- runId : string ,
535
+ releaserId : string ,
536
536
metadata : string ,
537
537
score : string ,
538
538
callback ?: Callback < void >
@@ -544,7 +544,7 @@ declare module "@internal/redis" {
544
544
queueKey : string ,
545
545
metadataKey : string ,
546
546
releaseQueue : string ,
547
- runId : string ,
547
+ releaserId : string ,
548
548
callback ?: Callback < void >
549
549
) : Result < void , Context > ;
550
550
}
0 commit comments