Skip to content

Commit

Permalink
fix(change-delay): add current time to delay (#789) fixes #787
Browse files Browse the repository at this point in the history
  • Loading branch information
roggervalf committed Oct 5, 2021
1 parent 3712537 commit 4a70def
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 18 deletions.
3 changes: 2 additions & 1 deletion src/classes/scripts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,8 @@ export class Scripts {
): Promise<void> {
const client = await queue.client;

const args = this.changeDelayArgs(queue, jobId, delay);
const delayTimestamp = Date.now() + delay;
const args = this.changeDelayArgs(queue, jobId, delayTimestamp);
const result = await (<any>client).changeDelay(args);
if (result < 0) {
throw this.finishedErrors(result, jobId, 'changeDelay', 'delayed');
Expand Down
34 changes: 17 additions & 17 deletions src/test/test_job.ts
Original file line number Diff line number Diff line change
Expand Up @@ -499,42 +499,42 @@ describe('Job', function() {
});

describe('.changeDelay', () => {
it('can change delay of a delayed job', async () => {
const clock = sinon.useFakeTimers();
const date = new Date();
clock.setSystemTime(date);
it('can change delay of a delayed job', async function() {
this.timeout(8000);

const queueScheduler = new QueueScheduler(queueName);
await queueScheduler.waitUntilReady();
const nextTick = 2 * ONE_SECOND;

const worker = new Worker(queueName, async job => {});
await worker.waitUntilReady();

const startTime = new Date().getTime();

const completing = new Promise<void>((resolve, reject) => {
worker.on('completed', async () => {
const timeDiff = new Date().getTime() - startTime;
expect(timeDiff).to.be.gte(4000);
resolve();
});
});

const job = await Job.create(
queue,
'test',
{ foo: 'bar' },
{ delay: 2000 },
);

const isDelayed = await job.isDelayed();
expect(isDelayed).to.be.equal(true);

await job.changeDelay(4000);
clock.tick(nextTick);

const isDelayedAfterChangeDelay = await job.isDelayed();
expect(isDelayedAfterChangeDelay).to.be.equal(true);

const worker = new Worker(queueName, async job => {});

clock.tick(2 * nextTick);

const completing = new Promise<void>((resolve, reject) => {
worker.on('completed', async () => {
resolve();
});
});

await completing;

clock.restore();
await queueScheduler.close();
await worker.close();
});
Expand Down

0 comments on commit 4a70def

Please sign in to comment.