Skip to content

Commit 87386ca

Browse files
authored
fix(job-scheduler): handle empty scheduler hash fallback (#3797) fixes #3796
1 parent 93ebc9d commit 87386ca

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

src/classes/job-scheduler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ export class JobScheduler extends QueueBase {
273273
jobData: any,
274274
next?: number,
275275
): JobSchedulerJson<D> | undefined {
276-
if (jobData) {
276+
if (jobData && Object.keys(jobData).length > 0) {
277277
const jobSchedulerData: JobSchedulerJson<D> = {
278278
key,
279279
name: jobData.name,

tests/job_scheduler.test.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2255,6 +2255,29 @@ describe('Job Scheduler', () => {
22552255
});
22562256
});
22572257

2258+
describe('when listing legacy schedulers without hash data', () => {
2259+
it('should parse scheduler fields from legacy key format', async () => {
2260+
const client = await queue.client;
2261+
const next = Date.now() + ONE_MINUTE;
2262+
const legacyKey = 'legacy-name:legacy-id:::*/5 * * * * *';
2263+
2264+
await client.zadd(queue.toKey('repeat'), next, legacyKey);
2265+
2266+
const schedulers = await queue.getJobSchedulers();
2267+
2268+
expect(schedulers).toHaveLength(1);
2269+
expect(schedulers[0]).toEqual({
2270+
key: legacyKey,
2271+
name: 'legacy-name',
2272+
id: 'legacy-id',
2273+
endDate: null,
2274+
tz: null,
2275+
pattern: '*/5 * * * * *',
2276+
next,
2277+
});
2278+
});
2279+
});
2280+
22582281
describe('when repeatable job fails', () => {
22592282
it('should continue repeating', async () => {
22602283
const date = new Date('2017-02-07T15:24:00.000Z');

0 commit comments

Comments
 (0)