@volontariapp/post-processors 3.0.14-snap-13fd7a0 → 3.0.14-snap-89c4711
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/dist/common/job-outbox-failed.post-processor.d.ts +1 -1
- package/dist/common/job-outbox-failed.post-processor.d.ts.map +1 -1
- package/dist/common/job-outbox-failed.post-processor.js +52 -6
- package/dist/common/job-outbox-failed.post-processor.js.map +1 -1
- package/dist/common/job-outbox-success.post-processor.d.ts +1 -1
- package/dist/common/job-outbox-success.post-processor.d.ts.map +1 -1
- package/dist/common/job-outbox-success.post-processor.js +48 -4
- package/dist/common/job-outbox-success.post-processor.js.map +1 -1
- package/dist/test/common/job-outbox-processors.int.spec.js +212 -2
- package/dist/test/common/job-outbox-processors.int.spec.js.map +1 -1
- package/dist/test/utils/factories/job-outbox-event.factory.d.ts +1 -1
- package/dist/test/utils/factories/job-outbox-event.factory.d.ts.map +1 -1
- package/dist/test/utils/factories/job-outbox-event.factory.js +4 -4
- package/dist/test/utils/factories/job-outbox-event.factory.js.map +1 -1
- package/package.json +4 -4
|
@@ -4,8 +4,8 @@ import { CommonEventMessagingType, type IJobAuditPayload, type StreamEvent } fro
|
|
|
4
4
|
import type { DataSource } from 'typeorm';
|
|
5
5
|
import type { Redis } from 'ioredis';
|
|
6
6
|
export declare class JobOutboxFailedPostProcessor extends SinglePostProcessor<CommonEventMessagingType.JOB_OUTBOX_FAILED> {
|
|
7
|
-
private readonly outboxWriter;
|
|
8
7
|
private readonly outboxRepository;
|
|
8
|
+
private readonly db;
|
|
9
9
|
constructor(db: DataSource, redisDriver: Redis, options: PostProcessorOptions);
|
|
10
10
|
protected shouldProcess(eventType: CommonEventMessagingType | string): boolean;
|
|
11
11
|
protected processEvent(event: StreamEvent<IJobAuditPayload>, messageId: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-outbox-failed.post-processor.d.ts","sourceRoot":"","sources":["../../src/common/job-outbox-failed.post-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"job-outbox-failed.post-processor.d.ts","sourceRoot":"","sources":["../../src/common/job-outbox-failed.post-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,OAAO,EACL,wBAAwB,EACxB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;AASjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGrC,qBAAa,4BAA6B,SAAQ,mBAAmB,CAAC,wBAAwB,CAAC,iBAAiB,CAAC;IAC/G,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuB;IACxD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAa;gBAEpB,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB;cAM1D,aAAa,CAAC,SAAS,EAAE,wBAAwB,GAAG,MAAM,GAAG,OAAO;cAIvE,YAAY,CAC1B,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,EACpC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;CAwFjB"}
|
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
import { SinglePostProcessor } from '../core/processors/single.post-processor.js';
|
|
2
2
|
import { CommonEventMessagingType, } from '@volontariapp/messaging';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { JobsOutboxRepository, EventQueueWriter, EventQueueRepository } from '@volontariapp/outbox';
|
|
4
|
+
import { getEventForJob } from '@volontariapp/messaging';
|
|
5
|
+
import { EventQueueEntity, EventQueueModel, JobsOutboxModel, OutboxStatus, } from '@volontariapp/database';
|
|
6
|
+
import { Streams } from '@volontariapp/shared';
|
|
5
7
|
export class JobOutboxFailedPostProcessor extends SinglePostProcessor {
|
|
6
|
-
outboxWriter;
|
|
7
8
|
outboxRepository;
|
|
9
|
+
db;
|
|
8
10
|
constructor(db, redisDriver, options) {
|
|
9
11
|
super(redisDriver, options);
|
|
12
|
+
this.db = db;
|
|
10
13
|
this.outboxRepository = new JobsOutboxRepository(db);
|
|
11
|
-
this.outboxWriter = new JobsOutboxWriter(this.logger, this.outboxRepository);
|
|
12
14
|
}
|
|
13
15
|
shouldProcess(eventType) {
|
|
14
16
|
return eventType === CommonEventMessagingType.JOB_OUTBOX_FAILED.toString();
|
|
15
17
|
}
|
|
16
18
|
async processEvent(event, messageId) {
|
|
17
19
|
const jobId = event.payload.after.job_id;
|
|
20
|
+
const jobType = event.payload.after.job_type;
|
|
21
|
+
const errorMessage = event.payload.after.error_message;
|
|
18
22
|
if (!jobId) {
|
|
19
23
|
this.logger.error('Received JOB_OUTBOX_FAILED but no job_id found in payload', { messageId });
|
|
20
24
|
return;
|
|
@@ -25,8 +29,50 @@ export class JobOutboxFailedPostProcessor extends SinglePostProcessor {
|
|
|
25
29
|
this.logger.error(`Job with id ${jobId} does not exist in outbox`, { messageId, jobId });
|
|
26
30
|
return;
|
|
27
31
|
}
|
|
28
|
-
entity.status
|
|
29
|
-
|
|
32
|
+
if (entity.status === OutboxStatus.FAILED) {
|
|
33
|
+
this.logger.warn(`Job ${jobId} already marked as FAILED. Skipping to avoid duplicate events.`, { messageId, jobId });
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const originalPayload = entity.payload;
|
|
37
|
+
if (!jobType) {
|
|
38
|
+
this.logger.warn(`Missing jobType for job ${jobId}. Skipping feedback event.`, {
|
|
39
|
+
messageId,
|
|
40
|
+
jobId,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
await this.db.transaction(async (manager) => {
|
|
44
|
+
const updateResult = await manager.update(JobsOutboxModel, { id: jobId, status: OutboxStatus.PENDING }, { status: OutboxStatus.FAILED });
|
|
45
|
+
if (updateResult.affected === 0) {
|
|
46
|
+
this.logger.warn(`Race condition avoided: Job ${jobId} already updated or deleted.`, {
|
|
47
|
+
messageId,
|
|
48
|
+
jobId,
|
|
49
|
+
});
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (jobType) {
|
|
53
|
+
try {
|
|
54
|
+
const transactionalEventWriter = new EventQueueWriter(this.logger, new EventQueueRepository(manager.getRepository(EventQueueModel)));
|
|
55
|
+
const eventType = getEventForJob(jobType);
|
|
56
|
+
const eventEntity = EventQueueEntity.createEvent({
|
|
57
|
+
type: eventType,
|
|
58
|
+
emitter: 'ms-post-processors',
|
|
59
|
+
emitterId: jobId,
|
|
60
|
+
targetServices: [Streams.WS_JOBS_OUTBOX_FAILURE],
|
|
61
|
+
payload: {
|
|
62
|
+
status: 'FAILED',
|
|
63
|
+
originalPayload,
|
|
64
|
+
error: errorMessage ?? undefined,
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
await transactionalEventWriter.create(eventEntity);
|
|
68
|
+
}
|
|
69
|
+
catch (mappingError) {
|
|
70
|
+
this.logger.debug(`No feedback event emitted for failed job ${jobId} of type ${jobType}`, {
|
|
71
|
+
error: mappingError,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
});
|
|
30
76
|
}
|
|
31
77
|
catch (error) {
|
|
32
78
|
this.logger.error(`Failed to process JOB_OUTBOX_FAILED for job ${jobId}`, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-outbox-failed.post-processor.js","sourceRoot":"","sources":["../../src/common/job-outbox-failed.post-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"job-outbox-failed.post-processor.js","sourceRoot":"","sources":["../../src/common/job-outbox-failed.post-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,8 @@ import { CommonEventMessagingType, type IJobAuditPayload, type StreamEvent } fro
|
|
|
4
4
|
import type { DataSource } from 'typeorm';
|
|
5
5
|
import type { Redis } from 'ioredis';
|
|
6
6
|
export declare class JobOutboxSuccessPostProcessor extends SinglePostProcessor<CommonEventMessagingType.JOB_OUTBOX_SUCCESS> {
|
|
7
|
-
private readonly outboxWriter;
|
|
8
7
|
private readonly outboxRepository;
|
|
8
|
+
private readonly db;
|
|
9
9
|
constructor(db: DataSource, redisDriver: Redis, options: PostProcessorOptions);
|
|
10
10
|
protected shouldProcess(eventType: CommonEventMessagingType | string): boolean;
|
|
11
11
|
protected processEvent(event: StreamEvent<IJobAuditPayload>, messageId: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-outbox-success.post-processor.d.ts","sourceRoot":"","sources":["../../src/common/job-outbox-success.post-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"job-outbox-success.post-processor.d.ts","sourceRoot":"","sources":["../../src/common/job-outbox-success.post-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,OAAO,EACL,wBAAwB,EACxB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGrC,qBAAa,6BAA8B,SAAQ,mBAAmB,CAAC,wBAAwB,CAAC,kBAAkB,CAAC;IACjH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuB;IACxD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAa;gBAEpB,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB;cAM1D,aAAa,CAAC,SAAS,EAAE,wBAAwB,GAAG,MAAM,GAAG,OAAO;cAIvE,YAAY,CAC1B,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,EACpC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;CA8EjB"}
|
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
import { SinglePostProcessor } from '../core/processors/single.post-processor.js';
|
|
2
2
|
import { CommonEventMessagingType, } from '@volontariapp/messaging';
|
|
3
|
-
import {
|
|
3
|
+
import { JobsOutboxRepository, EventQueueWriter, EventQueueRepository } from '@volontariapp/outbox';
|
|
4
|
+
import { EventQueueEntity, EventQueueModel, JobsOutboxModel } from '@volontariapp/database';
|
|
5
|
+
import { getEventForJob } from '@volontariapp/messaging';
|
|
6
|
+
import { Streams } from '@volontariapp/shared';
|
|
4
7
|
export class JobOutboxSuccessPostProcessor extends SinglePostProcessor {
|
|
5
|
-
outboxWriter;
|
|
6
8
|
outboxRepository;
|
|
9
|
+
db;
|
|
7
10
|
constructor(db, redisDriver, options) {
|
|
8
11
|
super(redisDriver, options);
|
|
12
|
+
this.db = db;
|
|
9
13
|
this.outboxRepository = new JobsOutboxRepository(db);
|
|
10
|
-
this.outboxWriter = new JobsOutboxWriter(this.logger, this.outboxRepository);
|
|
11
14
|
}
|
|
12
15
|
shouldProcess(eventType) {
|
|
13
16
|
return eventType === CommonEventMessagingType.JOB_OUTBOX_SUCCESS.toString();
|
|
14
17
|
}
|
|
15
18
|
async processEvent(event, messageId) {
|
|
16
19
|
const jobId = event.payload.after.job_id;
|
|
20
|
+
const jobType = event.payload.after.job_type;
|
|
17
21
|
if (!jobId) {
|
|
18
22
|
this.logger.error('Received JOB_OUTBOX_SUCCESS but no job_id found in payload', {
|
|
19
23
|
messageId,
|
|
@@ -26,7 +30,47 @@ export class JobOutboxSuccessPostProcessor extends SinglePostProcessor {
|
|
|
26
30
|
this.logger.error(`Job with id ${jobId} does not exist in outbox`, { messageId, jobId });
|
|
27
31
|
return;
|
|
28
32
|
}
|
|
29
|
-
|
|
33
|
+
const originalPayload = event.payload.after.result_payload?.originalPayload;
|
|
34
|
+
if (!jobType || !originalPayload) {
|
|
35
|
+
this.logger.warn(`Missing jobType or originalPayload for job ${jobId}. Skipping feedback event.`, {
|
|
36
|
+
messageId,
|
|
37
|
+
jobId,
|
|
38
|
+
jobType,
|
|
39
|
+
hasOriginalPayload: !!originalPayload,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
await this.db.transaction(async (manager) => {
|
|
43
|
+
const deleteResult = await manager.delete(JobsOutboxModel, { id: jobId });
|
|
44
|
+
if (deleteResult.affected === 0) {
|
|
45
|
+
this.logger.warn(`Race condition avoided: Job ${jobId} already deleted.`, {
|
|
46
|
+
messageId,
|
|
47
|
+
jobId,
|
|
48
|
+
});
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (jobType && originalPayload) {
|
|
52
|
+
try {
|
|
53
|
+
const transactionalEventWriter = new EventQueueWriter(this.logger, new EventQueueRepository(manager.getRepository(EventQueueModel)));
|
|
54
|
+
const eventType = getEventForJob(jobType);
|
|
55
|
+
const eventEntity = EventQueueEntity.createEvent({
|
|
56
|
+
type: eventType,
|
|
57
|
+
emitter: 'ms-post-processors',
|
|
58
|
+
emitterId: jobId,
|
|
59
|
+
targetServices: [Streams.WS_JOBS_OUTBOX_SUCCESS],
|
|
60
|
+
payload: {
|
|
61
|
+
status: 'SUCCESS',
|
|
62
|
+
originalPayload,
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
await transactionalEventWriter.create(eventEntity);
|
|
66
|
+
}
|
|
67
|
+
catch (mappingError) {
|
|
68
|
+
this.logger.debug(`No feedback event emitted for job ${jobId} of type ${jobType}`, {
|
|
69
|
+
error: mappingError,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
});
|
|
30
74
|
}
|
|
31
75
|
catch (error) {
|
|
32
76
|
this.logger.error(`Failed to process JOB_OUTBOX_SUCCESS for job ${jobId}`, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-outbox-success.post-processor.js","sourceRoot":"","sources":["../../src/common/job-outbox-success.post-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"job-outbox-success.post-processor.js","sourceRoot":"","sources":["../../src/common/job-outbox-success.post-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach, afterEach, afterAll, beforeAll, jest, } from '@jest/globals';
|
|
2
2
|
import { Redis } from 'ioredis';
|
|
3
|
-
import { databaseMapper, JobsOutboxModel, JobsOutboxEntity, OutboxStatus, } from '@volontariapp/database';
|
|
3
|
+
import { databaseMapper, JobsOutboxModel, JobsOutboxEntity, EventQueueModel, EventQueueEntity, OutboxStatus, } from '@volontariapp/database';
|
|
4
4
|
import { testDataSource, initializeTestDb, closeTestDb } from '../data-source.js';
|
|
5
5
|
import { testRedisOptions } from '../redis-config.js';
|
|
6
|
-
import { CommonEventMessagingType } from '@volontariapp/messaging';
|
|
6
|
+
import { CommonEventMessagingType, JobMessagingType, EventEventMessagingType, } from '@volontariapp/messaging';
|
|
7
7
|
import { pushTestEventToStream, waitFor, TestSuccessProcessor, TestFailedProcessor, makeTestJobOutboxEvent, } from '../utils/index.js';
|
|
8
8
|
import { randomUUID } from 'node:crypto';
|
|
9
9
|
describe('JobOutbox PostProcessors Integration', () => {
|
|
@@ -13,6 +13,7 @@ describe('JobOutbox PostProcessors Integration', () => {
|
|
|
13
13
|
beforeAll(async () => {
|
|
14
14
|
await initializeTestDb();
|
|
15
15
|
databaseMapper.registerBidirectional(JobsOutboxModel, JobsOutboxEntity);
|
|
16
|
+
databaseMapper.registerBidirectional(EventQueueModel, EventQueueEntity);
|
|
16
17
|
redis = new Redis(testRedisOptions);
|
|
17
18
|
});
|
|
18
19
|
afterAll(async () => {
|
|
@@ -21,7 +22,9 @@ describe('JobOutbox PostProcessors Integration', () => {
|
|
|
21
22
|
});
|
|
22
23
|
beforeEach(async () => {
|
|
23
24
|
const repository = testDataSource.getRepository(JobsOutboxModel);
|
|
25
|
+
const eventQueueRepository = testDataSource.getRepository(EventQueueModel);
|
|
24
26
|
await repository.createQueryBuilder().delete().execute();
|
|
27
|
+
await eventQueueRepository.createQueryBuilder().delete().execute();
|
|
25
28
|
await redis.flushdb();
|
|
26
29
|
jest.clearAllMocks();
|
|
27
30
|
const options = {
|
|
@@ -77,6 +80,110 @@ describe('JobOutbox PostProcessors Integration', () => {
|
|
|
77
80
|
await waitFor(() => loggerSpy.mock.calls.length > 0, 3000);
|
|
78
81
|
expect(loggerSpy).toHaveBeenCalledWith(`Job with id ${jobId} does not exist in outbox`, expect.anything());
|
|
79
82
|
});
|
|
83
|
+
it('should generate a SUCCESS feedback event if the job is a fallback job type', async () => {
|
|
84
|
+
const jobId = randomUUID();
|
|
85
|
+
const repository = testDataSource.getRepository(JobsOutboxModel);
|
|
86
|
+
const eventQueueRepository = testDataSource.getRepository(EventQueueModel);
|
|
87
|
+
const job = repository.create({
|
|
88
|
+
id: jobId,
|
|
89
|
+
type: JobMessagingType.FALLBACK_CREATE_EVENT,
|
|
90
|
+
emitter: 'test-emitter',
|
|
91
|
+
target: 'test-target',
|
|
92
|
+
status: OutboxStatus.PENDING,
|
|
93
|
+
emitterId: randomUUID(),
|
|
94
|
+
traceId: randomUUID(),
|
|
95
|
+
attempts: 0,
|
|
96
|
+
payload: { action: 'test', data: {} },
|
|
97
|
+
scheduledAt: new Date(),
|
|
98
|
+
createdAt: new Date(),
|
|
99
|
+
updatedAt: new Date(),
|
|
100
|
+
});
|
|
101
|
+
await repository.save(job);
|
|
102
|
+
const resultPayload = {
|
|
103
|
+
originalPayload: { someData: 'test payload value' },
|
|
104
|
+
};
|
|
105
|
+
const eventPayload = makeTestJobOutboxEvent(jobId, CommonEventMessagingType.JOB_OUTBOX_SUCCESS, JobMessagingType.FALLBACK_CREATE_EVENT, resultPayload);
|
|
106
|
+
await pushTestEventToStream(redis, 'stream:test', '123-success-fallback', eventPayload);
|
|
107
|
+
await successProcessor.start();
|
|
108
|
+
await waitFor(async () => {
|
|
109
|
+
const events = await eventQueueRepository.find({ where: { emitterId: jobId } });
|
|
110
|
+
return events.length > 0;
|
|
111
|
+
}, 3000);
|
|
112
|
+
const events = await eventQueueRepository.find({ where: { emitterId: jobId } });
|
|
113
|
+
expect(events.length).toBe(1);
|
|
114
|
+
expect(events[0]?.type).toBe(EventEventMessagingType.FALLBACK_CREATE_EVENT);
|
|
115
|
+
const payload = events[0]?.payload;
|
|
116
|
+
expect(payload.after.status).toBe('SUCCESS');
|
|
117
|
+
expect(payload.after.originalPayload).toEqual({ someData: 'test payload value' });
|
|
118
|
+
const exists = await repository.exists({ where: { id: jobId } });
|
|
119
|
+
expect(exists).toBe(false);
|
|
120
|
+
});
|
|
121
|
+
it('should delete the job but not emit an event if the job type is not mapped', async () => {
|
|
122
|
+
const jobId = randomUUID();
|
|
123
|
+
const repository = testDataSource.getRepository(JobsOutboxModel);
|
|
124
|
+
const eventQueueRepository = testDataSource.getRepository(EventQueueModel);
|
|
125
|
+
const loggerSpy = jest.spyOn(successProcessor.getLogger(), 'debug');
|
|
126
|
+
const job = repository.create({
|
|
127
|
+
id: jobId,
|
|
128
|
+
type: 'unmapped-job-type',
|
|
129
|
+
emitter: 'test-emitter',
|
|
130
|
+
target: 'test-target',
|
|
131
|
+
status: OutboxStatus.PENDING,
|
|
132
|
+
emitterId: randomUUID(),
|
|
133
|
+
traceId: randomUUID(),
|
|
134
|
+
attempts: 0,
|
|
135
|
+
payload: { action: 'test', data: {} },
|
|
136
|
+
scheduledAt: new Date(),
|
|
137
|
+
createdAt: new Date(),
|
|
138
|
+
updatedAt: new Date(),
|
|
139
|
+
});
|
|
140
|
+
await repository.save(job);
|
|
141
|
+
const eventPayload = makeTestJobOutboxEvent(jobId, CommonEventMessagingType.JOB_OUTBOX_SUCCESS, 'unmapped-job-type', { originalPayload: { foo: 'bar' } });
|
|
142
|
+
await pushTestEventToStream(redis, 'stream:test', '123-success-unmapped', eventPayload);
|
|
143
|
+
await successProcessor.start();
|
|
144
|
+
await waitFor(async () => {
|
|
145
|
+
const exists = await repository.exists({ where: { id: jobId } });
|
|
146
|
+
return !exists;
|
|
147
|
+
}, 3000);
|
|
148
|
+
const events = await eventQueueRepository.find({ where: { emitterId: jobId } });
|
|
149
|
+
expect(events.length).toBe(0);
|
|
150
|
+
const exists = await repository.exists({ where: { id: jobId } });
|
|
151
|
+
expect(exists).toBe(false);
|
|
152
|
+
expect(loggerSpy).toHaveBeenCalledWith(`No feedback event emitted for job ${jobId} of type unmapped-job-type`, expect.anything());
|
|
153
|
+
});
|
|
154
|
+
it('should delete the job but not emit an event if originalPayload is missing', async () => {
|
|
155
|
+
const jobId = randomUUID();
|
|
156
|
+
const repository = testDataSource.getRepository(JobsOutboxModel);
|
|
157
|
+
const eventQueueRepository = testDataSource.getRepository(EventQueueModel);
|
|
158
|
+
const loggerSpy = jest.spyOn(successProcessor.getLogger(), 'debug');
|
|
159
|
+
const job = repository.create({
|
|
160
|
+
id: jobId,
|
|
161
|
+
type: JobMessagingType.FALLBACK_CREATE_EVENT,
|
|
162
|
+
emitter: 'test-emitter',
|
|
163
|
+
target: 'test-target',
|
|
164
|
+
status: OutboxStatus.PENDING,
|
|
165
|
+
emitterId: randomUUID(),
|
|
166
|
+
traceId: randomUUID(),
|
|
167
|
+
attempts: 0,
|
|
168
|
+
payload: { action: 'test', data: {} },
|
|
169
|
+
scheduledAt: new Date(),
|
|
170
|
+
createdAt: new Date(),
|
|
171
|
+
updatedAt: new Date(),
|
|
172
|
+
});
|
|
173
|
+
await repository.save(job);
|
|
174
|
+
const eventPayload = makeTestJobOutboxEvent(jobId, CommonEventMessagingType.JOB_OUTBOX_SUCCESS, JobMessagingType.FALLBACK_CREATE_EVENT, { someOtherData: 'foo' });
|
|
175
|
+
await pushTestEventToStream(redis, 'stream:test', '123-success-no-payload', eventPayload);
|
|
176
|
+
await successProcessor.start();
|
|
177
|
+
await waitFor(async () => {
|
|
178
|
+
const exists = await repository.exists({ where: { id: jobId } });
|
|
179
|
+
return !exists;
|
|
180
|
+
}, 3000);
|
|
181
|
+
const events = await eventQueueRepository.find({ where: { emitterId: jobId } });
|
|
182
|
+
expect(events.length).toBe(0);
|
|
183
|
+
const exists = await repository.exists({ where: { id: jobId } });
|
|
184
|
+
expect(exists).toBe(false);
|
|
185
|
+
expect(loggerSpy).not.toHaveBeenCalledWith(expect.stringContaining(`No feedback event emitted for job`), expect.anything());
|
|
186
|
+
});
|
|
80
187
|
});
|
|
81
188
|
describe('JobOutboxFailedPostProcessor', () => {
|
|
82
189
|
it('should update the job status to FAILED if it exists', async () => {
|
|
@@ -117,6 +224,109 @@ describe('JobOutbox PostProcessors Integration', () => {
|
|
|
117
224
|
await waitFor(() => loggerSpy.mock.calls.length > 0, 3000);
|
|
118
225
|
expect(loggerSpy).toHaveBeenCalledWith(`Job with id ${jobId} does not exist in outbox`, expect.anything());
|
|
119
226
|
});
|
|
227
|
+
it('should generate a FAILED feedback event if the job is a fallback job type', async () => {
|
|
228
|
+
const jobId = randomUUID();
|
|
229
|
+
const repository = testDataSource.getRepository(JobsOutboxModel);
|
|
230
|
+
const eventQueueRepository = testDataSource.getRepository(EventQueueModel);
|
|
231
|
+
const originalJobPayload = { someData: 'failed payload value' };
|
|
232
|
+
const job = repository.create({
|
|
233
|
+
id: jobId,
|
|
234
|
+
type: JobMessagingType.FALLBACK_UPDATE_EVENT,
|
|
235
|
+
emitter: 'test-emitter',
|
|
236
|
+
target: 'test-target',
|
|
237
|
+
status: OutboxStatus.PENDING,
|
|
238
|
+
emitterId: randomUUID(),
|
|
239
|
+
traceId: randomUUID(),
|
|
240
|
+
attempts: 0,
|
|
241
|
+
payload: originalJobPayload,
|
|
242
|
+
scheduledAt: new Date(),
|
|
243
|
+
createdAt: new Date(),
|
|
244
|
+
updatedAt: new Date(),
|
|
245
|
+
});
|
|
246
|
+
await repository.save(job);
|
|
247
|
+
const eventPayload = makeTestJobOutboxEvent(jobId, CommonEventMessagingType.JOB_OUTBOX_FAILED, JobMessagingType.FALLBACK_UPDATE_EVENT, {}, 'Test error message');
|
|
248
|
+
await pushTestEventToStream(redis, 'stream:test', '123-failed-fallback', eventPayload);
|
|
249
|
+
await failedProcessor.start();
|
|
250
|
+
await waitFor(async () => {
|
|
251
|
+
const events = await eventQueueRepository.find({ where: { emitterId: jobId } });
|
|
252
|
+
return events.length > 0;
|
|
253
|
+
}, 3000);
|
|
254
|
+
const events = await eventQueueRepository.find({ where: { emitterId: jobId } });
|
|
255
|
+
expect(events.length).toBe(1);
|
|
256
|
+
expect(events[0]?.type).toBe(EventEventMessagingType.FALLBACK_UPDATE_EVENT);
|
|
257
|
+
const payload = events[0]?.payload;
|
|
258
|
+
expect(payload.after.status).toBe('FAILED');
|
|
259
|
+
expect(payload.after.originalPayload).toEqual(originalJobPayload);
|
|
260
|
+
expect(payload.after.error).toBe('Test error message');
|
|
261
|
+
const job_fetch = await repository.findOneBy({ id: jobId });
|
|
262
|
+
expect(job_fetch?.status).toBe(OutboxStatus.FAILED);
|
|
263
|
+
});
|
|
264
|
+
it('should update job status but not emit an event if the job type is not mapped', async () => {
|
|
265
|
+
const jobId = randomUUID();
|
|
266
|
+
const repository = testDataSource.getRepository(JobsOutboxModel);
|
|
267
|
+
const eventQueueRepository = testDataSource.getRepository(EventQueueModel);
|
|
268
|
+
const loggerSpy = jest.spyOn(failedProcessor.getLogger(), 'debug');
|
|
269
|
+
const job = repository.create({
|
|
270
|
+
id: jobId,
|
|
271
|
+
type: 'unmapped-job-type',
|
|
272
|
+
emitter: 'test-emitter',
|
|
273
|
+
target: 'test-target',
|
|
274
|
+
status: OutboxStatus.PENDING,
|
|
275
|
+
emitterId: randomUUID(),
|
|
276
|
+
traceId: randomUUID(),
|
|
277
|
+
attempts: 0,
|
|
278
|
+
payload: { foo: 'bar' },
|
|
279
|
+
scheduledAt: new Date(),
|
|
280
|
+
createdAt: new Date(),
|
|
281
|
+
updatedAt: new Date(),
|
|
282
|
+
});
|
|
283
|
+
await repository.save(job);
|
|
284
|
+
const eventPayload = makeTestJobOutboxEvent(jobId, CommonEventMessagingType.JOB_OUTBOX_FAILED, 'unmapped-job-type', {}, 'Test error message');
|
|
285
|
+
await pushTestEventToStream(redis, 'stream:test', '123-failed-unmapped', eventPayload);
|
|
286
|
+
await failedProcessor.start();
|
|
287
|
+
await waitFor(async () => {
|
|
288
|
+
const job_fetch = await repository.findOneBy({ id: jobId });
|
|
289
|
+
return job_fetch?.status === OutboxStatus.FAILED;
|
|
290
|
+
}, 3000);
|
|
291
|
+
const events = await eventQueueRepository.find({ where: { emitterId: jobId } });
|
|
292
|
+
expect(events.length).toBe(0);
|
|
293
|
+
const job_fetch = await repository.findOneBy({ id: jobId });
|
|
294
|
+
expect(job_fetch?.status).toBe(OutboxStatus.FAILED);
|
|
295
|
+
expect(loggerSpy).toHaveBeenCalledWith(`No feedback event emitted for failed job ${jobId} of type unmapped-job-type`, expect.anything());
|
|
296
|
+
});
|
|
297
|
+
it('should update job status but not emit an event if jobType is missing in payload', async () => {
|
|
298
|
+
const jobId = randomUUID();
|
|
299
|
+
const repository = testDataSource.getRepository(JobsOutboxModel);
|
|
300
|
+
const eventQueueRepository = testDataSource.getRepository(EventQueueModel);
|
|
301
|
+
const loggerSpy = jest.spyOn(failedProcessor.getLogger(), 'debug');
|
|
302
|
+
const job = repository.create({
|
|
303
|
+
id: jobId,
|
|
304
|
+
type: JobMessagingType.FALLBACK_UPDATE_EVENT,
|
|
305
|
+
emitter: 'test-emitter',
|
|
306
|
+
target: 'test-target',
|
|
307
|
+
status: OutboxStatus.PENDING,
|
|
308
|
+
emitterId: randomUUID(),
|
|
309
|
+
traceId: randomUUID(),
|
|
310
|
+
attempts: 0,
|
|
311
|
+
payload: { foo: 'bar' },
|
|
312
|
+
scheduledAt: new Date(),
|
|
313
|
+
createdAt: new Date(),
|
|
314
|
+
updatedAt: new Date(),
|
|
315
|
+
});
|
|
316
|
+
await repository.save(job);
|
|
317
|
+
const eventPayload = makeTestJobOutboxEvent(jobId, CommonEventMessagingType.JOB_OUTBOX_FAILED, '', {}, 'Test error message');
|
|
318
|
+
await pushTestEventToStream(redis, 'stream:test', '123-failed-missing-type', eventPayload);
|
|
319
|
+
await failedProcessor.start();
|
|
320
|
+
await waitFor(async () => {
|
|
321
|
+
const job_fetch = await repository.findOneBy({ id: jobId });
|
|
322
|
+
return job_fetch?.status === OutboxStatus.FAILED;
|
|
323
|
+
}, 3000);
|
|
324
|
+
const events = await eventQueueRepository.find({ where: { emitterId: jobId } });
|
|
325
|
+
expect(events.length).toBe(0);
|
|
326
|
+
const job_fetch = await repository.findOneBy({ id: jobId });
|
|
327
|
+
expect(job_fetch?.status).toBe(OutboxStatus.FAILED);
|
|
328
|
+
expect(loggerSpy).not.toHaveBeenCalledWith(expect.stringContaining(`No feedback event emitted for failed job`), expect.anything());
|
|
329
|
+
});
|
|
120
330
|
});
|
|
121
331
|
});
|
|
122
332
|
//# sourceMappingURL=job-outbox-processors.int.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-outbox-processors.int.spec.js","sourceRoot":"","sources":["../../../src/test/common/job-outbox-processors.int.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"job-outbox-processors.int.spec.js","sourceRoot":"","sources":["../../../src/test/common/job-outbox-processors.int.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { CommonEventMessagingType } from '@volontariapp/messaging';
|
|
2
2
|
import { type StreamEvent, type IJobAuditPayload } from '@volontariapp/messaging';
|
|
3
|
-
export declare function makeTestJobOutboxEvent(jobId: string, eventType: CommonEventMessagingType): StreamEvent<IJobAuditPayload>;
|
|
3
|
+
export declare function makeTestJobOutboxEvent(jobId: string, eventType: CommonEventMessagingType, jobType?: string, resultPayload?: Record<string, unknown>, errorMessage?: string | null): StreamEvent<IJobAuditPayload>;
|
|
4
4
|
//# sourceMappingURL=job-outbox-event.factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-outbox-event.factory.d.ts","sourceRoot":"","sources":["../../../../src/test/utils/factories/job-outbox-event.factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGlF,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,wBAAwB,
|
|
1
|
+
{"version":3,"file":"job-outbox-event.factory.d.ts","sourceRoot":"","sources":["../../../../src/test/utils/factories/job-outbox-event.factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGlF,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,wBAAwB,EACnC,OAAO,GAAE,MAAmB,EAC5B,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAC3C,YAAY,GAAE,MAAM,GAAG,IAAW,GACjC,WAAW,CAAC,gBAAgB,CAAC,CA6B/B"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
|
-
export function makeTestJobOutboxEvent(jobId, eventType) {
|
|
2
|
+
export function makeTestJobOutboxEvent(jobId, eventType, jobType = 'test-job', resultPayload = {}, errorMessage = null) {
|
|
3
3
|
const auditPayload = {
|
|
4
4
|
id: randomUUID(),
|
|
5
5
|
job_id: jobId,
|
|
6
|
-
job_type:
|
|
6
|
+
job_type: jobType,
|
|
7
7
|
status: 'completed',
|
|
8
8
|
worker_id: 'test-worker',
|
|
9
9
|
current_attempt: 1,
|
|
10
10
|
started_at: new Date().toISOString(),
|
|
11
11
|
finished_at: new Date().toISOString(),
|
|
12
|
-
result_payload:
|
|
13
|
-
error_message:
|
|
12
|
+
result_payload: resultPayload,
|
|
13
|
+
error_message: errorMessage,
|
|
14
14
|
error_stack: null,
|
|
15
15
|
created_at: new Date().toISOString(),
|
|
16
16
|
updated_at: new Date().toISOString(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-outbox-event.factory.js","sourceRoot":"","sources":["../../../../src/test/utils/factories/job-outbox-event.factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,sBAAsB,CACpC,KAAa,EACb,SAAmC;
|
|
1
|
+
{"version":3,"file":"job-outbox-event.factory.js","sourceRoot":"","sources":["../../../../src/test/utils/factories/job-outbox-event.factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,sBAAsB,CACpC,KAAa,EACb,SAAmC,EACnC,UAAkB,UAAU,EAC5B,gBAAyC,EAAE,EAC3C,eAA8B,IAAI;IAElC,MAAM,YAAY,GAAqB;QACrC,EAAE,EAAE,UAAU,EAAE;QAChB,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,aAAa;QACxB,eAAe,EAAE,CAAC;QAClB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,cAAc,EAAE,aAAa;QAC7B,aAAa,EAAE,YAAY;QAC3B,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,UAAU,EAAE;QAChB,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE;QAC1B,OAAO,EAAE,cAAc;QACvB,SAAS,EAAE,UAAU,EAAE;QACvB,aAAa,EAAE,UAAU,EAAE;QAC3B,OAAO,EAAE,CAAC;QACV,OAAO,EAAE;YACP,KAAK,EAAE,YAAY;SACpB;QACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volontariapp/post-processors",
|
|
3
|
-
"version": "3.0.14-snap-
|
|
3
|
+
"version": "3.0.14-snap-89c4711",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"provenance": true
|
|
@@ -37,11 +37,11 @@
|
|
|
37
37
|
"test:int:watch": "INTEGRATION=true node --experimental-vm-modules $(yarn bin jest) --watch"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@volontariapp/database": "3.3.14-snap-
|
|
40
|
+
"@volontariapp/database": "3.3.14-snap-89c4711",
|
|
41
41
|
"@volontariapp/health-check": "1.0.4",
|
|
42
42
|
"@volontariapp/logger": "0.2.5",
|
|
43
|
-
"@volontariapp/messaging": "2.9.0-snap-
|
|
44
|
-
"@volontariapp/outbox": "0.9.32-snap-
|
|
43
|
+
"@volontariapp/messaging": "2.9.0-snap-89c4711",
|
|
44
|
+
"@volontariapp/outbox": "0.9.32-snap-89c4711",
|
|
45
45
|
"@volontariapp/shared": "0.7.1"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|