Skip to content

Commit 8b6edae

Browse files
authored
fix(bullmq): consider delayed markers (#605) fixes #600
1 parent d41ecc3 commit 8b6edae

File tree

6 files changed

+28
-17
lines changed

6 files changed

+28
-17
lines changed

example/bullmq.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const Arena = require('../');
2-
const {Queue, QueueScheduler, Worker, FlowProducer} = require('bullmq');
2+
const {Queue, Worker, FlowProducer} = require('bullmq');
33
const RedisServer = require('redis-server');
44

55
// Select ports that are unlikely to be used by other services a developer might be running locally.
@@ -14,11 +14,6 @@ async function main() {
1414
const queueName = 'name_of_my_queue';
1515
const parentQueueName = 'name_of_my_parent_queue';
1616

17-
const queueScheduler = new QueueScheduler(queueName, {
18-
connection: {port: REDIS_SERVER_PORT},
19-
});
20-
await queueScheduler.waitUntilReady();
21-
2217
const queue = new Queue(queueName, {
2318
connection: {port: REDIS_SERVER_PORT},
2419
});
@@ -44,6 +39,7 @@ async function main() {
4439
}
4540
},
4641
{
42+
concurrency: 3,
4743
connection: {port: REDIS_SERVER_PORT},
4844
}
4945
);

example/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"dependencies": {
1616
"bee-queue": "^1.4.0",
1717
"bull": "^3.22.6",
18-
"bullmq": "^1.34.0",
18+
"bullmq": "^3.0.0",
1919
"express": "^4.17.1",
2020
"redis-server": "^1.2.2"
2121
}

src/server/views/dashboard/queueJobsByState.js

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ async function _json(req, res) {
5959
const words = state.split('-');
6060
const finalStateName = words.map((word) => _.capitalize(word)).join('');
6161
jobs = await queue[`get${finalStateName}`](0, 1000);
62-
jobs = jobs.map((j) => j.toJSON());
62+
jobs = jobs.map((j) => j && j.toJSON());
6363
}
6464

6565
const filename = `${queueName}-${state}-dump.json`;
@@ -125,13 +125,21 @@ async function _html(req, res) {
125125
jobs = await queue.getJobs(stateTypes, startId, endId, order === 'asc');
126126
}
127127

128-
for (const job of jobs) {
129-
const jobState = queue.IS_BEE ? job.status : await job.getState();
130-
job.showRetryButton = !queue.IS_BEE || jobState === 'failed';
131-
job.retryButtonText = jobState === 'failed' ? 'Retry' : 'Trigger';
132-
job.showPromoteButton = !queue.IS_BEE && jobState === 'delayed';
133-
job.showDeleteRepeatableButton = queue.IS_BULL && job.opts.repeat;
134-
job.parent = JobHelpers.getKeyProperties(job.parentKey);
128+
for (let i = 0; i < jobs.length; i++) {
129+
if (!jobs[i]) {
130+
jobs[i] = {
131+
showRetryButton: false,
132+
showPromoteButton: false,
133+
showDeleteRepeatableButton: false,
134+
};
135+
} else {
136+
const jobState = queue.IS_BEE ? jobs[i].status : await jobs[i].getState();
137+
jobs[i].showRetryButton = !queue.IS_BEE || jobState === 'failed';
138+
jobs[i].retryButtonText = jobState === 'failed' ? 'Retry' : 'Trigger';
139+
jobs[i].showPromoteButton = !queue.IS_BEE && jobState === 'delayed';
140+
jobs[i].showDeleteRepeatableButton = queue.IS_BULL && jobs[i].opts.repeat;
141+
jobs[i].parent = JobHelpers.getKeyProperties(jobs[i].parentKey);
142+
}
135143
}
136144

137145
let pages = _.range(page - 6, page + 7).filter((page) => page >= 1);

src/server/views/dashboard/templates/queueJobsByState.hbs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,9 @@
136136
<li class="list-group-item">
137137
<div class="js-bulk-action-container bulk-job-container">
138138
<input type="hidden" name="jobId" value="{{ this.id }}" />
139+
{{#if this.id}}
139140
<input class="js-bulk-job" name="jobChecked" type="checkbox" />
141+
{{/if}}
140142
</div>
141143

142144
<a role="button" data-toggle="collapse" href="#collapse{{hashIdAttr this}}">
@@ -151,9 +153,14 @@
151153
{{/if}}
152154
</h4>
153155
</a>
156+
{{#if this.id}}
154157
<div id="collapse{{hashIdAttr this}}" class="collapse">
155158
{{~> dashboard/jobDetails this basePath=../basePath displayJobInline=true queueName=../queueName queueHost=../queueHost jobState=../state }}
156159
</div>
160+
{{else}}
161+
<div id ="collapse-undefined" class="collapse">
162+
</div>
163+
{{/if}}
157164
</li>
158165
{{/each}}
159166
</ul>

src/server/views/helpers/handlebars.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ const helpers = {
7373
return mapping;
7474
},
7575

76-
getDelayedExectionAt(job) {
76+
getDelayedExecutionAt(job) {
7777
// Bull
7878
if (job.delay) {
7979
return job.delay + getTimestamp(job);

src/server/views/partials/dashboard/jobDetails.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
{{#eq jobState 'delayed'}}
6060
<div class="col-sm-3">
6161
<h5>Executes At</h5>
62-
{{moment (getDelayedExectionAt this) "llll"}}
62+
{{moment (getDelayedExecutionAt this) "llll"}}
6363
</div>
6464
{{/eq}}
6565

0 commit comments

Comments
 (0)