bullmq 1.14.6 → 1.15.1

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/README.md CHANGED
@@ -29,11 +29,9 @@
29
29
  </p>
30
30
  </div>
31
31
 
32
- # Poll
32
+ # NEW! Tutorials
33
33
 
34
- Which other languages would you like to see BullMQ ported to, Python, PHP, Java or C#?
35
-
36
- Please vote here: https://twitter.com/manast/status/1318168684049977345
34
+ You can find tutorials and news in this blog: https://blog.taskforce.sh/
37
35
 
38
36
  # Official FrontEnd
39
37
 
package/dist/bullmq.d.ts CHANGED
@@ -314,6 +314,10 @@ export declare class Queue<T = any, R = any, N extends string = string> extends
314
314
  */
315
315
  drain(delayed?: boolean): Promise<[Error, any][]>;
316
316
  clean(grace: number, limit: number, type?: 'completed' | 'wait' | 'active' | 'paused' | 'delayed' | 'failed'): Promise<any>;
317
+ obliterate(opts?: {
318
+ force?: boolean;
319
+ count?: number;
320
+ }): Promise<void>;
317
321
  trimEvents(maxLength: number): Promise<number>;
318
322
  }
319
323
 
@@ -337,7 +341,6 @@ export declare class QueueBase extends EventEmitter {
337
341
 
338
342
  export declare interface QueueBaseOptions {
339
343
  connection?: ConnectionOptions;
340
- client?: Redis;
341
344
  /**
342
345
  * Prefix for all queue keys.
343
346
  */
@@ -652,6 +655,10 @@ export declare class Scripts {
652
655
  static updateDelaySet(queue: QueueBase, delayedTimestamp: number): Promise<any>;
653
656
  static promote(queue: QueueBase, jobId: string): Promise<any>;
654
657
  static moveStalledJobsToWait(queue: QueueScheduler): Promise<any>;
658
+ static obliterate(queue: Queue, opts: {
659
+ force: boolean;
660
+ count: number;
661
+ }): Promise<any>;
655
662
  }
656
663
 
657
664
  export declare interface Strategies {
@@ -1 +1 @@
1
- {"version":3,"file":"child-pool.js","sourceRoot":"","sources":["../../src/classes/child-pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"child-pool.js","sourceRoot":"","sources":["../../src/classes/child-pool.ts"],"names":[],"mappings":"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"}
@@ -56,5 +56,9 @@ export declare class Queue<T = any, R = any, N extends string = string> extends
56
56
  */
57
57
  drain(delayed?: boolean): Promise<[Error, any][]>;
58
58
  clean(grace: number, limit: number, type?: 'completed' | 'wait' | 'active' | 'paused' | 'delayed' | 'failed'): Promise<any>;
59
+ obliterate(opts?: {
60
+ force?: boolean;
61
+ count?: number;
62
+ }): Promise<void>;
59
63
  trimEvents(maxLength: number): Promise<number>;
60
64
  }
@@ -123,7 +123,7 @@ class Queue extends _1.QueueGetters {
123
123
  return multi.exec();
124
124
  }
125
125
  }
126
- /*@function clean
126
+ /* @method clean
127
127
  *
128
128
  * Cleans jobs from a queue. Similar to drain but keeps jobs within a certain
129
129
  * grace period.
@@ -138,6 +138,27 @@ class Queue extends _1.QueueGetters {
138
138
  this.emit('cleaned', jobs, type);
139
139
  return jobs;
140
140
  }
141
+ /* @method obliterate
142
+ *
143
+ * Completely destroys the queue and all of its contents irreversibly.
144
+ * This method will the *pause* the queue and requires that there are no
145
+ * active jobs. It is possible to bypass this requirement, i.e. not
146
+ * having active jobs using the "force" option.
147
+ *
148
+ * Note: This operation requires to iterate on all the jobs stored in the queue
149
+ * and can be slow for very large queues.
150
+ *
151
+ * @param { { force: boolean, count: number }} opts. Use force = true to force obliteration even
152
+ * with active jobs in the queue. Use count with the maximun number of deleted keys per iteration,
153
+ * 1000 is the default.
154
+ */
155
+ async obliterate(opts) {
156
+ await this.pause();
157
+ let cursor = 0;
158
+ do {
159
+ cursor = await scripts_1.Scripts.obliterate(this, Object.assign({ force: false, count: 1000 }, opts));
160
+ } while (cursor);
161
+ }
141
162
  async trimEvents(maxLength) {
142
163
  const client = await this.client;
143
164
  return client.xtrim(this.keys.events, 'MAXLEN', '~', maxLength);
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/classes/queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/classes/queue.ts"],"names":[],"mappings":"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"}
@@ -41,4 +41,8 @@ export declare class Scripts {
41
41
  static updateDelaySet(queue: QueueBase, delayedTimestamp: number): Promise<any>;
42
42
  static promote(queue: QueueBase, jobId: string): Promise<any>;
43
43
  static moveStalledJobsToWait(queue: QueueScheduler): Promise<any>;
44
+ static obliterate(queue: Queue, opts: {
45
+ force: boolean;
46
+ count: number;
47
+ }): Promise<any>;
44
48
  }
@@ -308,6 +308,21 @@ class Scripts {
308
308
  ];
309
309
  return client.moveStalledJobsToWait(keys.concat(args));
310
310
  }
311
+ static async obliterate(queue, opts) {
312
+ const client = await queue.client;
313
+ const keys = [queue.keys.meta, queue.toKey('')];
314
+ const args = [opts.count, opts.force ? 'force' : null];
315
+ const result = await client.obliterate(keys.concat(args));
316
+ if (result < 0) {
317
+ switch (result) {
318
+ case -1:
319
+ throw new Error('Cannot obliterate non-paused queue');
320
+ case -2:
321
+ throw new Error('Cannot obliterate queue with active jobs');
322
+ }
323
+ }
324
+ return result;
325
+ }
311
326
  }
312
327
  exports.Scripts = Scripts;
313
328
  function raw2jobData(raw) {
@@ -1 +1 @@
1
- {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../src/classes/scripts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../src/classes/scripts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ --[[
2
+ Completely obliterates a queue and all of its contents
3
+ Input:
4
+
5
+ KEYS[1] meta
6
+ KEYS[2] base
7
+
8
+ ARGV[1] count
9
+ ARGV[2] force
10
+ ]]
11
+
12
+ -- This command completely destroys a queue including all of its jobs, current or past
13
+ -- leaving no trace of its existence. Since this script needs to iterate to find all the job
14
+ -- keys, consider that this call may be slow for very large queues.
15
+
16
+ -- The queue needs to be "paused" or it will return an error
17
+ -- If the queue has currently active jobs then the script by default will return error,
18
+ -- however this behaviour can be overrided using the `force` option.
19
+ local maxCount = tonumber(ARGV[1])
20
+ local count = 0
21
+ local baseKey = KEYS[2]
22
+
23
+ local rcall = redis.call
24
+ local function getListItems(keyName)
25
+ return rcall('LRANGE', keyName, 0, -1)
26
+ end
27
+
28
+ local function getZSetItems(keyName)
29
+ return rcall('ZRANGE', keyName, 0, -1)
30
+ end
31
+
32
+ local function getSetItems(keyName)
33
+ return rcall('SMEMBERS', keyName, 0, -1)
34
+ end
35
+
36
+ local function removeKeys(parentKey, keys)
37
+ for i, key in ipairs(keys) do
38
+ if(count > maxCount) then
39
+ return true
40
+ end
41
+ rcall("DEL", baseKey .. key)
42
+ count = count + 1
43
+ end
44
+ rcall("DEL", parentKey)
45
+ return false
46
+ end
47
+
48
+ local function removeLockKeys(keys)
49
+ for i, key in ipairs(keys) do
50
+ if(count > maxCount) then
51
+ return true
52
+ end
53
+ rcall("DEL", baseKey .. key .. ':lock')
54
+ count = count + 1
55
+ end
56
+ return false
57
+ end
58
+
59
+ -- 1) Check if paused, if not return with error.
60
+ if rcall("HEXISTS", KEYS[1], "paused") ~= 1 then
61
+ return -1 -- Error, NotPaused
62
+ end
63
+
64
+ -- 2) Check if there are active jobs, if there are and not "force" return error.
65
+ local activeKey = baseKey .. 'active'
66
+ local activeKeys = getListItems(activeKey)
67
+ if (#activeKeys > 0) then
68
+ if(ARGV[2] == "") then
69
+ return -2 -- Error, ExistsActiveJobs
70
+ end
71
+ end
72
+
73
+ if(removeLockKeys(activeKeys)) then
74
+ return 1
75
+ end
76
+
77
+ if(removeKeys(activeKey, activeKeys)) then
78
+ return 1
79
+ end
80
+
81
+ local waitKey = baseKey .. 'paused'
82
+ if(removeKeys(waitKey, getListItems(waitKey))) then
83
+ return 1
84
+ end
85
+
86
+ local delayedKey = baseKey .. 'delayed'
87
+ if(removeKeys(delayedKey, getZSetItems(delayedKey))) then
88
+ return 1
89
+ end
90
+
91
+ local completedKey = baseKey .. 'completed'
92
+ if(removeKeys(completedKey, getZSetItems(completedKey))) then
93
+ return 1
94
+ end
95
+
96
+ local failedKey = baseKey .. 'failed'
97
+ if(removeKeys(failedKey, getZSetItems(failedKey))) then
98
+ return 1
99
+ end
100
+
101
+ local waitKey = baseKey .. 'wait'
102
+ if(removeKeys(waitKey, getListItems(waitKey))) then
103
+ return 1
104
+ end
105
+
106
+ local waitKey = baseKey .. 'wait'
107
+ if(removeKeys(waitKey, getListItems(waitKey))) then
108
+ return 1
109
+ end
110
+
111
+ rcall("DEL", baseKey .. 'priority')
112
+ rcall("DEL", baseKey .. 'events')
113
+ rcall("DEL", baseKey .. 'delay')
114
+ rcall("DEL", baseKey .. 'stalled-check')
115
+ rcall("DEL", baseKey .. 'stalled')
116
+ rcall("DEL", baseKey .. 'id')
117
+ rcall("DEL", baseKey .. 'meta')
118
+
119
+ return 0
@@ -1,5 +1,4 @@
1
1
  import { JobsOptions } from '../interfaces';
2
- import { Redis } from 'ioredis';
3
2
  import { ConnectionOptions } from './redis-options';
4
3
  export declare enum ClientType {
5
4
  blocking = "blocking",
@@ -7,7 +6,6 @@ export declare enum ClientType {
7
6
  }
8
7
  export interface QueueBaseOptions {
9
8
  connection?: ConnectionOptions;
10
- client?: Redis;
11
9
  /**
12
10
  * Prefix for all queue keys.
13
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"queue-options.js","sourceRoot":"","sources":["../../src/interfaces/queue-options.ts"],"names":[],"mappings":";;;AAKA,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,mCAAqB,CAAA;IACrB,+BAAiB,CAAA;AACnB,CAAC,EAHW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAGrB"}
1
+ {"version":3,"file":"queue-options.js","sourceRoot":"","sources":["../../src/interfaces/queue-options.ts"],"names":[],"mappings":";;;AAGA,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,mCAAqB,CAAA;IACrB,+BAAiB,CAAA;AACnB,CAAC,EAHW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAGrB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const classes_1 = require("../classes");
4
+ const utils_1 = require("@src/utils");
5
+ const chai_1 = require("chai");
6
+ const IORedis = require("ioredis");
7
+ const mocha_1 = require("mocha");
8
+ const uuid_1 = require("uuid");
9
+ mocha_1.describe('Obliterate', () => {
10
+ let queue;
11
+ let queueEvents;
12
+ let queueName;
13
+ mocha_1.beforeEach(async function () {
14
+ queueName = 'test-' + uuid_1.v4();
15
+ queue = new classes_1.Queue(queueName);
16
+ queueEvents = new classes_1.QueueEvents(queueName);
17
+ await queueEvents.waitUntilReady();
18
+ });
19
+ afterEach(async function () {
20
+ await queue.close();
21
+ await queueEvents.close();
22
+ await utils_1.removeAllQueueData(new IORedis(), queueName);
23
+ });
24
+ mocha_1.it('should obliterate an empty queue', async () => {
25
+ await queue.waitUntilReady();
26
+ await queue.obliterate();
27
+ const client = await queue.client;
28
+ const keys = await client.keys(`bull:${queue.name}:*`);
29
+ chai_1.expect(keys.length).to.be.eql(0);
30
+ });
31
+ mocha_1.it('should obliterate a queue with jobs in different statuses', async () => {
32
+ await queue.waitUntilReady();
33
+ await queue.add('test', { foo: 'bar' });
34
+ await queue.add('test', { foo: 'bar2' });
35
+ await queue.add('test', { foo: 'bar3' }, { delay: 5000 });
36
+ const job = await queue.add('test', { qux: 'baz' });
37
+ let first = true;
38
+ const worker = new classes_1.Worker(queue.name, async (job) => {
39
+ if (first) {
40
+ first = false;
41
+ throw new Error('failed first');
42
+ }
43
+ return utils_1.delay(250);
44
+ });
45
+ await worker.waitUntilReady();
46
+ await job.waitUntilFinished(queueEvents);
47
+ await queue.obliterate();
48
+ const client = await queue.client;
49
+ const keys = await client.keys(`bull:${queue.name}:*`);
50
+ chai_1.expect(keys.length).to.be.eql(0);
51
+ await worker.close();
52
+ });
53
+ mocha_1.it('should raise exception if queue has active jobs', async () => {
54
+ await queue.waitUntilReady();
55
+ await queue.add('test', { foo: 'bar' });
56
+ const job = await queue.add('test', { qux: 'baz' });
57
+ await queue.add('test', { foo: 'bar2' });
58
+ await queue.add('test', { foo: 'bar3' }, { delay: 5000 });
59
+ let first = true;
60
+ const worker = new classes_1.Worker(queue.name, async (job) => {
61
+ if (first) {
62
+ first = false;
63
+ throw new Error('failed first');
64
+ }
65
+ return utils_1.delay(250);
66
+ });
67
+ await worker.waitUntilReady();
68
+ await job.waitUntilFinished(queueEvents);
69
+ try {
70
+ await queue.obliterate();
71
+ }
72
+ catch (err) {
73
+ const client = await queue.client;
74
+ const keys = await client.keys(`bull:${queue.name}:*`);
75
+ chai_1.expect(keys.length).to.be.not.eql(0);
76
+ await worker.close();
77
+ return;
78
+ }
79
+ throw new Error('Should raise an exception if there are active jobs');
80
+ });
81
+ mocha_1.it('should obliterate if queue has active jobs using "force"', async () => {
82
+ await queue.waitUntilReady();
83
+ await queue.add('test', { foo: 'bar' });
84
+ const job = await queue.add('test', { qux: 'baz' });
85
+ await queue.add('test', { foo: 'bar2' });
86
+ await queue.add('test', { foo: 'bar3' }, { delay: 5000 });
87
+ let first = true;
88
+ const worker = new classes_1.Worker(queue.name, async (job) => {
89
+ if (first) {
90
+ first = false;
91
+ throw new Error('failed first');
92
+ }
93
+ return utils_1.delay(250);
94
+ });
95
+ await worker.waitUntilReady();
96
+ await job.waitUntilFinished(queueEvents);
97
+ await queue.obliterate({ force: true });
98
+ const client = await queue.client;
99
+ const keys = await client.keys(`bull:${queue.name}:*`);
100
+ chai_1.expect(keys.length).to.be.eql(0);
101
+ await worker.close();
102
+ });
103
+ });
104
+ //# sourceMappingURL=test_obliterate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_obliterate.js","sourceRoot":"","sources":["../../src/test/test_obliterate.ts"],"names":[],"mappings":";;AAAA,wCAAwE;AACxE,sCAAuD;AACvD,+BAA8B;AAC9B,mCAAmC;AACnC,iCAAiD;AACjD,+BAA0B;AAE1B,gBAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,KAAY,CAAC;IACjB,IAAI,WAAwB,CAAC;IAC7B,IAAI,SAAiB,CAAC;IAEtB,kBAAU,CAAC,KAAK;QACd,SAAS,GAAG,OAAO,GAAG,SAAE,EAAE,CAAC;QAC3B,KAAK,GAAG,IAAI,eAAK,CAAC,SAAS,CAAC,CAAC;QAC7B,WAAW,GAAG,IAAI,qBAAW,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,WAAW,CAAC,cAAc,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK;QACb,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;QAC1B,MAAM,0BAAkB,CAAC,IAAI,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,UAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;QAE7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;QAEzB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;QAEvD,aAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,UAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;QAE7B,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAEpD,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,MAAM,MAAM,GAAG,IAAI,gBAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;YAChD,IAAI,KAAK,EAAE;gBACT,KAAK,GAAG,KAAK,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;aACjC;YACD,OAAO,aAAK,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;QAE9B,MAAM,GAAG,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAEzC,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;QACvD,aAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEjC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,UAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;QAE7B,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAEpD,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1D,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,MAAM,MAAM,GAAG,IAAI,gBAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;YAChD,IAAI,KAAK,EAAE;gBACT,KAAK,GAAG,KAAK,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;aACjC;YACD,OAAO,aAAK,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;QAE9B,MAAM,GAAG,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAEzC,IAAI;YACF,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;SAC1B;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;YACvD,aAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAErC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO;SACR;QAED,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,UAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;QAE7B,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAEpD,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1D,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,MAAM,MAAM,GAAG,IAAI,gBAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;YAChD,IAAI,KAAK,EAAE;gBACT,KAAK,GAAG,KAAK,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;aACjC;YACD,OAAO,aAAK,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;QAE9B,MAAM,GAAG,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;QACvD,aAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEjC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/utils.d.ts CHANGED
@@ -9,4 +9,4 @@ export declare function array2obj(arr: string[]): {
9
9
  };
10
10
  export declare function delay(ms: number): Promise<void>;
11
11
  export declare function isRedisInstance(obj: any): boolean;
12
- export declare function removeAllQueueData(client: Redis, queueName: string, prefix?: string): Promise<unknown>;
12
+ export declare function removeAllQueueData(client: Redis, queueName: string, prefix?: string): Promise<void>;
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,31 @@
1
+ ## [1.15.1](https://github.com/taskforcesh/bullmq/compare/v1.15.0...v1.15.1) (2021-03-19)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **obliterate:** safer implementation ([82f571f](https://github.com/taskforcesh/bullmq/commit/82f571f2548c61c776b897fd1c5050bb09c8afca))
7
+
8
+ # [1.15.0](https://github.com/taskforcesh/bullmq/compare/v1.14.8...v1.15.0) (2021-03-18)
9
+
10
+
11
+ ### Features
12
+
13
+ * add method to "obliterate" a queue, fixes [#430](https://github.com/taskforcesh/bullmq/issues/430) ([624be0e](https://github.com/taskforcesh/bullmq/commit/624be0ed48159c2aa405025938925a723330e0c2))
14
+
15
+ ## [1.14.8](https://github.com/taskforcesh/bullmq/compare/v1.14.7...v1.14.8) (2021-03-06)
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * specify promise type to make TS 4.1 and 4.2 happy. ([#418](https://github.com/taskforcesh/bullmq/issues/418)) ([702f609](https://github.com/taskforcesh/bullmq/commit/702f609b410d8b0652c2d0504a8a67526966fdc3))
21
+
22
+ ## [1.14.7](https://github.com/taskforcesh/bullmq/compare/v1.14.6...v1.14.7) (2021-02-16)
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * remove "client" property of QueueBaseOptions ([#324](https://github.com/taskforcesh/bullmq/issues/324)) ([e0b9e71](https://github.com/taskforcesh/bullmq/commit/e0b9e71c4da4a93af54c4386af461c61ab5f146c))
28
+
1
29
  ## [1.14.6](https://github.com/taskforcesh/bullmq/compare/v1.14.5...v1.14.6) (2021-02-16)
2
30
 
3
31
 
@@ -12,8 +12,10 @@
12
12
  * [Queues](guide/queues.md)
13
13
  * [Workers](guide/workers/README.md)
14
14
  * [Concurrency](guide/workers/concurrency.md)
15
+ * [Graceful shutdown](guide/workers/graceful-shutdown.md)
15
16
  * [Stalled Jobs](guide/workers/stalled-jobs.md)
16
17
  * [Sandboxed processors](guide/workers/sandboxed-processors.md)
18
+ * [Pausing queues](guide/workers/pausing-queues.md)
17
19
  * [Jobs](guide/jobs/README.md)
18
20
  * [FIFO](guide/jobs/fifo.md)
19
21
  * [LIFO](guide/jobs/lifo.md)
@@ -21,6 +23,7 @@
21
23
  * [Repeatable](guide/jobs/repeatable.md)
22
24
  * [Prioritized](guide/jobs/proritized.md)
23
25
  * [Stalled](guide/jobs/stalled.md)
26
+ * [Getters](guide/jobs/getters.md)
24
27
  * [Rate limiting](guide/rate-limiting.md)
25
28
  * [Retrying failing jobs](guide/retrying-failing-jobs.md)
26
29
  * [Returning job data](guide/returning-job-data.md)
@@ -11,7 +11,7 @@ import { Queue } from 'bullmq'
11
11
 
12
12
  const myQueue = new Queue('Paint');
13
13
 
14
- // Add a job that will be processed before all others
14
+ // Add a job that will be processed after all others
15
15
  await myQueue.add('wall', { color: 'pink' });
16
16
  ```
17
17
 
@@ -0,0 +1,36 @@
1
+ # Getters
2
+
3
+ When jobs are added to a queue, they will be in different statuses during their lifetime. BullMQ provides methods to retrieve information and jobs from the different statuses.
4
+
5
+
6
+
7
+ ![](../../.gitbook/assets/image.png)
8
+
9
+ #### Job Counts
10
+
11
+ It is often necessary to know how many jobs are in a given status:
12
+
13
+ ```typescript
14
+ import { Queue } from 'bullmq'
15
+
16
+ const myQueue = new Queue('Paint');
17
+
18
+ const counts = await myQueue.getJobCounts('wait', 'completed', 'failed');
19
+
20
+ // Returns an object like this { wait: number, completed: number, failed: number }
21
+ ```
22
+
23
+ The available status are: _completed, failed, delayed, active, wait, paused_ and _repeat._
24
+
25
+ #### Get Jobs
26
+
27
+ It is also possible to retrieve the jobs with pagination style semantics. For example:
28
+
29
+ ```typescript
30
+ const completed = await myQueue.getJobs(['completed'], 0, 100, true);
31
+
32
+ // returns the oldest 100 jobs
33
+ ```
34
+
35
+
36
+
@@ -20,7 +20,7 @@ const myQueue = new Queue('Paint');
20
20
  await myQueue.add('submarine', { color: 'yellow' },
21
21
  {
22
22
  repeat: {
23
- cron: '15 3 * * *'
23
+ cron: '* 15 3 * * *'
24
24
  }
25
25
  });
26
26
 
@@ -0,0 +1,18 @@
1
+ # Graceful shutdown
2
+
3
+ BullMQ supports graceful shutdowns of the workers. This is important so that we can minimize stalled jobs when a worker for some reason must be shutdown. But note that even in the event of an "ungraceful shutdown", the stalled mechanism in BullMQ allows for new workers to pick up stalled jobs and continue working on them.
4
+
5
+ {% hint style="danger" %}
6
+ In order for stalled jobs to be picked up by other workers you need to have a [QueueScheduler](https://docs.bullmq.io/guide/queuescheduler) class running in the system.
7
+ {% endhint %}
8
+
9
+ In order to perform a shutdown just call the _**close**_ method:
10
+
11
+ ```typescript
12
+ await worker.close();
13
+ ```
14
+
15
+ The above call will mark the worker as _closing_ so it will not pick up new jobs, at the same time it will wait for all the current jobs to be processed \(or failed\). This call will not timeout by itself, so you should make sure that your jobs finalize in a timely maner. If this call fails for some reason or it is not able to complete, the pending jobs will be marked as stalled and processed by other workers \(if correct stalled options are configured on the [QueueScheduler](https://github.com/taskforcesh/bullmq/blob/3a8873b6453405e6f8e57331f6cee30977406670/docs/gitbook/api/bullmq.queuescheduleroptions.md)\).
16
+
17
+
18
+
@@ -0,0 +1,26 @@
1
+ # Pausing queues
2
+
3
+ BullMQ supports pausing queues globally or locally. A queue is paused globally when no workers will pick up any jobs from the queue. When you pause a queue, the workers that are currently busy processing a job, will continue working on that job until it completes \(or failed\), and then will just keep idling until the queue has been unpaused.
4
+
5
+ Pausing a queue is performed by calling the _**pause**_ method on a [queue](https://github.com/taskforcesh/bullmq/blob/master/docs/gitbook/api/bullmq.queue.md) instance:
6
+
7
+ ```typescript
8
+ await myQueue.pause();
9
+ ```
10
+
11
+ It is also possible to pause a given worker instance, this is what we call pause locally. This pause works in a similar way as the global pause in the sense that the worker will conclude processing the jobs it has already started but will not process any new ones:
12
+
13
+ ```typescript
14
+ await myWorker.pause();
15
+ ```
16
+
17
+ The call above will be executed almost immediately, but note it is an async method, this is because it can also be called with an extra parameter so that the call waits for all the jobs in that given worker to complete:
18
+
19
+ ```typescript
20
+ await myWorker.pause(true);
21
+ ```
22
+
23
+ The call is useful if for some reason you want to know exactly when the jobs in the worker have all finalized.
24
+
25
+
26
+
@@ -9,7 +9,7 @@ In order to use a sandboxed processor just define the processor in a separate fi
9
9
  ```typescript
10
10
  import { Job } from 'bullmq';
11
11
 
12
- module.exports = async (job: Job) {
12
+ module.exports = async (job: Job) => {
13
13
  // Do something with job
14
14
  };
15
15
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bullmq",
3
- "version": "1.14.6",
3
+ "version": "1.15.1",
4
4
  "description": "Queue for messages and jobs based on Redis",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -33,7 +33,7 @@ const convertExecArgv = async (execArgv: string[]): Promise<string[]> => {
33
33
  };
34
34
 
35
35
  async function initChild(child: ChildProcess, processFile: string) {
36
- const onComplete = new Promise(resolve => {
36
+ const onComplete = new Promise<void>(resolve => {
37
37
  const onMessageHandler = (msg: any) => {
38
38
  if (msg.cmd === 'init-complete') {
39
39
  resolve();
@@ -175,7 +175,7 @@ export class Queue<
175
175
  }
176
176
  }
177
177
 
178
- /*@function clean
178
+ /* @method clean
179
179
  *
180
180
  * Cleans jobs from a queue. Similar to drain but keeps jobs within a certain
181
181
  * grace period.
@@ -207,6 +207,33 @@ export class Queue<
207
207
  return jobs;
208
208
  }
209
209
 
210
+ /* @method obliterate
211
+ *
212
+ * Completely destroys the queue and all of its contents irreversibly.
213
+ * This method will the *pause* the queue and requires that there are no
214
+ * active jobs. It is possible to bypass this requirement, i.e. not
215
+ * having active jobs using the "force" option.
216
+ *
217
+ * Note: This operation requires to iterate on all the jobs stored in the queue
218
+ * and can be slow for very large queues.
219
+ *
220
+ * @param { { force: boolean, count: number }} opts. Use force = true to force obliteration even
221
+ * with active jobs in the queue. Use count with the maximun number of deleted keys per iteration,
222
+ * 1000 is the default.
223
+ */
224
+ async obliterate(opts?: { force?: boolean; count?: number }) {
225
+ await this.pause();
226
+
227
+ let cursor = 0;
228
+ do {
229
+ cursor = await Scripts.obliterate(this, {
230
+ force: false,
231
+ count: 1000,
232
+ ...opts,
233
+ });
234
+ } while (cursor);
235
+ }
236
+
210
237
  async trimEvents(maxLength: number) {
211
238
  const client = await this.client;
212
239
  return client.xtrim(this.keys.events, 'MAXLEN', '~', maxLength);
@@ -472,6 +472,27 @@ export class Scripts {
472
472
  return (<any>client).moveStalledJobsToWait(keys.concat(args));
473
473
  }
474
474
 
475
+ static async obliterate(
476
+ queue: Queue,
477
+ opts: { force: boolean; count: number },
478
+ ) {
479
+ const client = await queue.client;
480
+
481
+ const keys: (string | number)[] = [queue.keys.meta, queue.toKey('')];
482
+ const args = [opts.count, opts.force ? 'force' : null];
483
+
484
+ const result = await (<any>client).obliterate(keys.concat(args));
485
+ if (result < 0) {
486
+ switch (result) {
487
+ case -1:
488
+ throw new Error('Cannot obliterate non-paused queue');
489
+ case -2:
490
+ throw new Error('Cannot obliterate queue with active jobs');
491
+ }
492
+ }
493
+ return result;
494
+ }
495
+
475
496
  /*
476
497
  // *
477
498
  // * Attempts to reprocess a job
@@ -0,0 +1,119 @@
1
+ --[[
2
+ Completely obliterates a queue and all of its contents
3
+ Input:
4
+
5
+ KEYS[1] meta
6
+ KEYS[2] base
7
+
8
+ ARGV[1] count
9
+ ARGV[2] force
10
+ ]]
11
+
12
+ -- This command completely destroys a queue including all of its jobs, current or past
13
+ -- leaving no trace of its existence. Since this script needs to iterate to find all the job
14
+ -- keys, consider that this call may be slow for very large queues.
15
+
16
+ -- The queue needs to be "paused" or it will return an error
17
+ -- If the queue has currently active jobs then the script by default will return error,
18
+ -- however this behaviour can be overrided using the `force` option.
19
+ local maxCount = tonumber(ARGV[1])
20
+ local count = 0
21
+ local baseKey = KEYS[2]
22
+
23
+ local rcall = redis.call
24
+ local function getListItems(keyName)
25
+ return rcall('LRANGE', keyName, 0, -1)
26
+ end
27
+
28
+ local function getZSetItems(keyName)
29
+ return rcall('ZRANGE', keyName, 0, -1)
30
+ end
31
+
32
+ local function getSetItems(keyName)
33
+ return rcall('SMEMBERS', keyName, 0, -1)
34
+ end
35
+
36
+ local function removeKeys(parentKey, keys)
37
+ for i, key in ipairs(keys) do
38
+ if(count > maxCount) then
39
+ return true
40
+ end
41
+ rcall("DEL", baseKey .. key)
42
+ count = count + 1
43
+ end
44
+ rcall("DEL", parentKey)
45
+ return false
46
+ end
47
+
48
+ local function removeLockKeys(keys)
49
+ for i, key in ipairs(keys) do
50
+ if(count > maxCount) then
51
+ return true
52
+ end
53
+ rcall("DEL", baseKey .. key .. ':lock')
54
+ count = count + 1
55
+ end
56
+ return false
57
+ end
58
+
59
+ -- 1) Check if paused, if not return with error.
60
+ if rcall("HEXISTS", KEYS[1], "paused") ~= 1 then
61
+ return -1 -- Error, NotPaused
62
+ end
63
+
64
+ -- 2) Check if there are active jobs, if there are and not "force" return error.
65
+ local activeKey = baseKey .. 'active'
66
+ local activeKeys = getListItems(activeKey)
67
+ if (#activeKeys > 0) then
68
+ if(ARGV[2] == "") then
69
+ return -2 -- Error, ExistsActiveJobs
70
+ end
71
+ end
72
+
73
+ if(removeLockKeys(activeKeys)) then
74
+ return 1
75
+ end
76
+
77
+ if(removeKeys(activeKey, activeKeys)) then
78
+ return 1
79
+ end
80
+
81
+ local waitKey = baseKey .. 'paused'
82
+ if(removeKeys(waitKey, getListItems(waitKey))) then
83
+ return 1
84
+ end
85
+
86
+ local delayedKey = baseKey .. 'delayed'
87
+ if(removeKeys(delayedKey, getZSetItems(delayedKey))) then
88
+ return 1
89
+ end
90
+
91
+ local completedKey = baseKey .. 'completed'
92
+ if(removeKeys(completedKey, getZSetItems(completedKey))) then
93
+ return 1
94
+ end
95
+
96
+ local failedKey = baseKey .. 'failed'
97
+ if(removeKeys(failedKey, getZSetItems(failedKey))) then
98
+ return 1
99
+ end
100
+
101
+ local waitKey = baseKey .. 'wait'
102
+ if(removeKeys(waitKey, getListItems(waitKey))) then
103
+ return 1
104
+ end
105
+
106
+ local waitKey = baseKey .. 'wait'
107
+ if(removeKeys(waitKey, getListItems(waitKey))) then
108
+ return 1
109
+ end
110
+
111
+ rcall("DEL", baseKey .. 'priority')
112
+ rcall("DEL", baseKey .. 'events')
113
+ rcall("DEL", baseKey .. 'delay')
114
+ rcall("DEL", baseKey .. 'stalled-check')
115
+ rcall("DEL", baseKey .. 'stalled')
116
+ rcall("DEL", baseKey .. 'id')
117
+ rcall("DEL", baseKey .. 'meta')
118
+
119
+ return 0
@@ -1,6 +1,4 @@
1
1
  import { JobsOptions } from '../interfaces';
2
-
3
- import { Redis } from 'ioredis';
4
2
  import { ConnectionOptions } from './redis-options';
5
3
 
6
4
  export enum ClientType {
@@ -10,7 +8,6 @@ export enum ClientType {
10
8
 
11
9
  export interface QueueBaseOptions {
12
10
  connection?: ConnectionOptions;
13
- client?: Redis;
14
11
  /**
15
12
  * Prefix for all queue keys.
16
13
  */
@@ -0,0 +1,127 @@
1
+ import { Queue, QueueEvents, QueueScheduler, Worker } from '../classes';
2
+ import { delay, removeAllQueueData } from '@src/utils';
3
+ import { expect } from 'chai';
4
+ import * as IORedis from 'ioredis';
5
+ import { beforeEach, describe, it } from 'mocha';
6
+ import { v4 } from 'uuid';
7
+
8
+ describe('Obliterate', () => {
9
+ let queue: Queue;
10
+ let queueEvents: QueueEvents;
11
+ let queueName: string;
12
+
13
+ beforeEach(async function() {
14
+ queueName = 'test-' + v4();
15
+ queue = new Queue(queueName);
16
+ queueEvents = new QueueEvents(queueName);
17
+ await queueEvents.waitUntilReady();
18
+ });
19
+
20
+ afterEach(async function() {
21
+ await queue.close();
22
+ await queueEvents.close();
23
+ await removeAllQueueData(new IORedis(), queueName);
24
+ });
25
+
26
+ it('should obliterate an empty queue', async () => {
27
+ await queue.waitUntilReady();
28
+
29
+ await queue.obliterate();
30
+
31
+ const client = await queue.client;
32
+ const keys = await client.keys(`bull:${queue.name}:*`);
33
+
34
+ expect(keys.length).to.be.eql(0);
35
+ });
36
+
37
+ it('should obliterate a queue with jobs in different statuses', async () => {
38
+ await queue.waitUntilReady();
39
+
40
+ await queue.add('test', { foo: 'bar' });
41
+ await queue.add('test', { foo: 'bar2' });
42
+ await queue.add('test', { foo: 'bar3' }, { delay: 5000 });
43
+ const job = await queue.add('test', { qux: 'baz' });
44
+
45
+ let first = true;
46
+ const worker = new Worker(queue.name, async job => {
47
+ if (first) {
48
+ first = false;
49
+ throw new Error('failed first');
50
+ }
51
+ return delay(250);
52
+ });
53
+ await worker.waitUntilReady();
54
+
55
+ await job.waitUntilFinished(queueEvents);
56
+
57
+ await queue.obliterate();
58
+ const client = await queue.client;
59
+ const keys = await client.keys(`bull:${queue.name}:*`);
60
+ expect(keys.length).to.be.eql(0);
61
+
62
+ await worker.close();
63
+ });
64
+
65
+ it('should raise exception if queue has active jobs', async () => {
66
+ await queue.waitUntilReady();
67
+
68
+ await queue.add('test', { foo: 'bar' });
69
+ const job = await queue.add('test', { qux: 'baz' });
70
+
71
+ await queue.add('test', { foo: 'bar2' });
72
+ await queue.add('test', { foo: 'bar3' }, { delay: 5000 });
73
+
74
+ let first = true;
75
+ const worker = new Worker(queue.name, async job => {
76
+ if (first) {
77
+ first = false;
78
+ throw new Error('failed first');
79
+ }
80
+ return delay(250);
81
+ });
82
+ await worker.waitUntilReady();
83
+
84
+ await job.waitUntilFinished(queueEvents);
85
+
86
+ try {
87
+ await queue.obliterate();
88
+ } catch (err) {
89
+ const client = await queue.client;
90
+ const keys = await client.keys(`bull:${queue.name}:*`);
91
+ expect(keys.length).to.be.not.eql(0);
92
+
93
+ await worker.close();
94
+ return;
95
+ }
96
+
97
+ throw new Error('Should raise an exception if there are active jobs');
98
+ });
99
+
100
+ it('should obliterate if queue has active jobs using "force"', async () => {
101
+ await queue.waitUntilReady();
102
+
103
+ await queue.add('test', { foo: 'bar' });
104
+ const job = await queue.add('test', { qux: 'baz' });
105
+
106
+ await queue.add('test', { foo: 'bar2' });
107
+ await queue.add('test', { foo: 'bar3' }, { delay: 5000 });
108
+
109
+ let first = true;
110
+ const worker = new Worker(queue.name, async job => {
111
+ if (first) {
112
+ first = false;
113
+ throw new Error('failed first');
114
+ }
115
+ return delay(250);
116
+ });
117
+ await worker.waitUntilReady();
118
+
119
+ await job.waitUntilFinished(queueEvents);
120
+ await queue.obliterate({ force: true });
121
+ const client = await queue.client;
122
+ const keys = await client.keys(`bull:${queue.name}:*`);
123
+ expect(keys.length).to.be.eql(0);
124
+
125
+ await worker.close();
126
+ });
127
+ });
package/src/utils.ts CHANGED
@@ -48,7 +48,7 @@ export async function removeAllQueueData(
48
48
  prefix = 'bull',
49
49
  ) {
50
50
  const pattern = `${prefix}:${queueName}:*`;
51
- return new Promise((resolve, reject) => {
51
+ return new Promise<void>((resolve, reject) => {
52
52
  const stream = client.scanStream({
53
53
  match: pattern,
54
54
  });