Skip to content

Commit d2bce27

Browse files
[BUGFIX] Augmente la durée maximum du job de calcul de la certificabilité.
#11430
2 parents 51ae5e6 + ef8262f commit d2bce27

File tree

6 files changed

+16
-3
lines changed

6 files changed

+16
-3
lines changed

Diff for: api/src/prescription/learner-management/application/jobs/schedule-compute-organization-learners-certificability-job-controller.js

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { ComputeCertificabilityJob } from '../../../../prescription/learner-mana
55
import { JobScheduleController } from '../../../../shared/application/jobs/job-schedule-controller.js';
66
import { config } from '../../../../shared/config.js';
77
import { DomainTransaction } from '../../../../shared/domain/DomainTransaction.js';
8+
import { JobExpireIn } from '../../../../shared/infrastructure/repositories/jobs/job-repository.js';
89
import * as organizationLearnerRepository from '../../../../shared/infrastructure/repositories/organization-learner-repository.js';
910
import { logger } from '../../../../shared/infrastructure/utils/logger.js';
1011
import { computeCertificabilityJobRepository } from '../../../learner-management/infrastructure/repositories/jobs/compute-certificability-job-repository.js';
@@ -14,6 +15,7 @@ class ScheduleComputeOrganizationLearnersCertificabilityJobController extends Jo
1415
constructor() {
1516
super('ScheduleComputeOrganizationLearnersCertificabilityJob', {
1617
jobCron: config.features.scheduleComputeOrganizationLearnersCertificability.cron,
18+
expireIn: JobExpireIn.FOUR_HOURS,
1719
});
1820
}
1921

Diff for: api/src/shared/application/jobs/job-controller.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import Joi from 'joi';
22

33
import { config } from '../../config.js';
44
import { EntityValidationError } from '../../domain/errors.js';
5+
import { JobExpireIn } from '../../infrastructure/repositories/jobs/job-repository.js';
56

67
export const JobGroup = {
78
DEFAULT: 'default',
@@ -11,7 +12,8 @@ export const JobGroup = {
1112
export class JobController {
1213
constructor(jobName, options = {}) {
1314
this.jobName = jobName;
14-
this.jobGroup = options.jobGroup || JobGroup.DEFAULT;
15+
this.jobGroup = options.jobGroup ?? JobGroup.DEFAULT;
16+
this.expireIn = options.expireIn ?? JobExpireIn.DEFAULT;
1517

1618
this.#validate();
1719
}

Diff for: api/src/shared/infrastructure/repositories/jobs/job-repository.js

+1
Original file line numberDiff line numberDiff line change
@@ -131,4 +131,5 @@ export const JobRetry = Object.freeze({
131131
export const JobExpireIn = Object.freeze({
132132
DEFAULT: '00:15:00',
133133
HIGH: '00:30:00',
134+
FOUR_HOURS: '04:00:00',
134135
});

Diff for: api/tests/shared/unit/application/jobs/job-controller_test.js

+3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { JobController, JobGroup } from '../../../../../src/shared/application/jobs/job-controller.js';
22
import { EntityValidationError } from '../../../../../src/shared/domain/errors.js';
3+
import { JobExpireIn } from '../../../../../src/shared/infrastructure/repositories/jobs/job-repository.js';
34
import { catchErrSync, expect } from '../../../../test-helper.js';
45

56
describe('Unit | Shared | Application | Jobs | JobController', function () {
@@ -29,6 +30,7 @@ describe('Unit | Shared | Application | Jobs | JobController', function () {
2930
// given
3031
const jobName = 'jobName';
3132
const jobGroup = JobGroup.DEFAULT;
33+
const expireIn = JobExpireIn.DEFAULT;
3234

3335
// when
3436
const controller = new JobController(jobName);
@@ -37,6 +39,7 @@ describe('Unit | Shared | Application | Jobs | JobController', function () {
3739
expect(controller).to.be.instanceOf(JobController).and.to.deep.equal({
3840
jobName,
3941
jobGroup,
42+
expireIn,
4043
});
4144
});
4245

Diff for: api/tests/unit/worker_test.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { ValidateOrganizationImportFileJob } from '../../src/prescription/learne
66
import { UserAnonymizedEventLoggingJobController } from '../../src/shared/application/jobs/audit-log/user-anonymized-event-logging-job-controller.js';
77
import { JobGroup } from '../../src/shared/application/jobs/job-controller.js';
88
import { config } from '../../src/shared/config.js';
9+
import { JobExpireIn } from '../../src/shared/infrastructure/repositories/jobs/job-repository.js';
910
import { registerJobs } from '../../worker.js';
1011
import { catchErr, expect, sinon } from '../test-helper.js';
1112

@@ -136,7 +137,7 @@ describe('#registerJobs', function () {
136137
expect(jobQueueStub.scheduleCronJob).to.have.been.calledWithExactly({
137138
name: 'ScheduleComputeOrganizationLearnersCertificabilityJob',
138139
cron: '0 21 * * *',
139-
options: { tz: 'Europe/Paris' },
140+
options: { tz: 'Europe/Paris', expireIn: JobExpireIn.FOUR_HOURS },
140141
});
141142
});
142143

Diff for: api/worker.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,11 @@ export async function registerJobs({ jobGroup, dependencies = { startPgBoss, cre
105105
}
106106

107107
if (job.jobCron) {
108-
await jobQueues.scheduleCronJob({ name: job.jobName, cron: job.jobCron, options: { tz: 'Europe/Paris' } });
108+
await jobQueues.scheduleCronJob({
109+
name: job.jobName,
110+
cron: job.jobCron,
111+
options: { tz: 'Europe/Paris', expireIn: job.expireIn },
112+
});
109113
logger.info(`Cron for job "${job.jobName}" scheduled "${job.jobCron}"`);
110114

111115
// For cronJob we need to unschedule older cron

0 commit comments

Comments
 (0)