@vendure/core 3.4.2-master-202509090229 → 3.4.2-master-202509110229
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/plugin/default-scheduler-plugin/constants.d.ts +1 -0
- package/dist/plugin/default-scheduler-plugin/constants.js +2 -1
- package/dist/plugin/default-scheduler-plugin/constants.js.map +1 -1
- package/dist/plugin/default-scheduler-plugin/default-scheduler-strategy.d.ts +1 -0
- package/dist/plugin/default-scheduler-plugin/default-scheduler-strategy.js +3 -0
- package/dist/plugin/default-scheduler-plugin/default-scheduler-strategy.js.map +1 -1
- package/dist/plugin/default-scheduler-plugin/default-scheduler.plugin.js +2 -0
- package/dist/plugin/default-scheduler-plugin/default-scheduler.plugin.js.map +1 -1
- package/dist/plugin/default-scheduler-plugin/stale-task.service.d.ts +27 -0
- package/dist/plugin/default-scheduler-plugin/stale-task.service.js +118 -0
- package/dist/plugin/default-scheduler-plugin/stale-task.service.js.map +1 -0
- package/package.json +3 -3
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_MANUAL_TRIGGER_CHECK_INTERVAL = exports.DEFAULT_TIMEOUT = exports.DEFAULT_SCHEDULER_PLUGIN_OPTIONS = void 0;
|
|
3
|
+
exports.loggerCtx = exports.DEFAULT_MANUAL_TRIGGER_CHECK_INTERVAL = exports.DEFAULT_TIMEOUT = exports.DEFAULT_SCHEDULER_PLUGIN_OPTIONS = void 0;
|
|
4
4
|
exports.DEFAULT_SCHEDULER_PLUGIN_OPTIONS = Symbol('DEFAULT_SCHEDULER_PLUGIN_OPTIONS');
|
|
5
5
|
exports.DEFAULT_TIMEOUT = 60000;
|
|
6
6
|
exports.DEFAULT_MANUAL_TRIGGER_CHECK_INTERVAL = 10000;
|
|
7
|
+
exports.loggerCtx = 'DefaultSchedulerPlugin';
|
|
7
8
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/plugin/default-scheduler-plugin/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,gCAAgC,GAAG,MAAM,CAAC,kCAAkC,CAAC,CAAC;AAC9E,QAAA,eAAe,GAAG,KAAK,CAAC;AACxB,QAAA,qCAAqC,GAAG,KAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/plugin/default-scheduler-plugin/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,gCAAgC,GAAG,MAAM,CAAC,kCAAkC,CAAC,CAAC;AAC9E,QAAA,eAAe,GAAG,KAAK,CAAC;AACxB,QAAA,qCAAqC,GAAG,KAAK,CAAC;AAC9C,QAAA,SAAS,GAAG,wBAAwB,CAAC"}
|
|
@@ -19,6 +19,7 @@ export declare class DefaultSchedulerStrategy implements SchedulerStrategy {
|
|
|
19
19
|
private readonly tasks;
|
|
20
20
|
private pluginOptions;
|
|
21
21
|
private runningTasks;
|
|
22
|
+
private staleTaskService;
|
|
22
23
|
init(injector: Injector): void;
|
|
23
24
|
destroy(): Promise<void>;
|
|
24
25
|
registerTask(task: ScheduledTask): void;
|
|
@@ -12,6 +12,7 @@ const connection_1 = require("../../connection");
|
|
|
12
12
|
const process_context_1 = require("../../process-context");
|
|
13
13
|
const constants_1 = require("./constants");
|
|
14
14
|
const scheduled_task_record_entity_1 = require("./scheduled-task-record.entity");
|
|
15
|
+
const stale_task_service_1 = require("./stale-task.service");
|
|
15
16
|
/**
|
|
16
17
|
* @description
|
|
17
18
|
* The default {@link SchedulerStrategy} implementation that uses the database to
|
|
@@ -30,6 +31,7 @@ class DefaultSchedulerStrategy {
|
|
|
30
31
|
this.connection = injector.get(connection_1.TransactionalConnection);
|
|
31
32
|
this.pluginOptions = injector.get(constants_1.DEFAULT_SCHEDULER_PLUGIN_OPTIONS);
|
|
32
33
|
this.injector = injector;
|
|
34
|
+
this.staleTaskService = injector.get(stale_task_service_1.StaleTaskService);
|
|
33
35
|
const runTriggerCheck = injector.get(config_service_1.ConfigService).schedulerOptions.runTasksInWorkerOnly === false ||
|
|
34
36
|
injector.get(process_context_1.ProcessContext).isWorker;
|
|
35
37
|
if (runTriggerCheck) {
|
|
@@ -57,6 +59,7 @@ class DefaultSchedulerStrategy {
|
|
|
57
59
|
return async (job) => {
|
|
58
60
|
var _a;
|
|
59
61
|
await this.ensureTaskIsRegistered(task);
|
|
62
|
+
await this.staleTaskService.cleanStaleLocksForTask(task);
|
|
60
63
|
const taskEntity = await this.connection.rawConnection
|
|
61
64
|
.getRepository(scheduled_task_record_entity_1.ScheduledTaskRecord)
|
|
62
65
|
.createQueryBuilder('task')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-scheduler-strategy.js","sourceRoot":"","sources":["../../../src/plugin/default-scheduler-plugin/default-scheduler-strategy.ts"],"names":[],"mappings":";;;;;;AAEA,4CAAoB;AAGpB,8CAAiD;AACjD,gEAA4D;AAC5D,uEAA4D;AAC5D,iDAA2D;AAC3D,2DAAuD;AAIvD,2CAA+D;AAC/D,iFAAqE;
|
|
1
|
+
{"version":3,"file":"default-scheduler-strategy.js","sourceRoot":"","sources":["../../../src/plugin/default-scheduler-plugin/default-scheduler-strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ const vendure_plugin_1 = require("../../plugin/vendure-plugin");
|
|
|
12
12
|
const constants_1 = require("./constants");
|
|
13
13
|
const default_scheduler_strategy_1 = require("./default-scheduler-strategy");
|
|
14
14
|
const scheduled_task_record_entity_1 = require("./scheduled-task-record.entity");
|
|
15
|
+
const stale_task_service_1 = require("./stale-task.service");
|
|
15
16
|
/**
|
|
16
17
|
* @description
|
|
17
18
|
* This plugin configures a default scheduling strategy that executes scheduled
|
|
@@ -62,6 +63,7 @@ exports.DefaultSchedulerPlugin = DefaultSchedulerPlugin = __decorate([
|
|
|
62
63
|
provide: constants_1.DEFAULT_SCHEDULER_PLUGIN_OPTIONS,
|
|
63
64
|
useFactory: () => DefaultSchedulerPlugin.options,
|
|
64
65
|
},
|
|
66
|
+
stale_task_service_1.StaleTaskService,
|
|
65
67
|
],
|
|
66
68
|
compatibility: '>0.0.0',
|
|
67
69
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-scheduler.plugin.js","sourceRoot":"","sources":["../../../src/plugin/default-scheduler-plugin/default-scheduler.plugin.ts"],"names":[],"mappings":";;;;;;;;;AAAA,4EAAuE;AACvE,gEAA4D;AAE5D,2CAIqB;AACrB,6EAAwE;AACxE,iFAAqE;
|
|
1
|
+
{"version":3,"file":"default-scheduler.plugin.js","sourceRoot":"","sources":["../../../src/plugin/default-scheduler-plugin/default-scheduler.plugin.ts"],"names":[],"mappings":";;;;;;;;;AAAA,4EAAuE;AACvE,gEAA4D;AAE5D,2CAIqB;AACrB,6EAAwE;AACxE,iFAAqE;AACrE,6DAAwD;AAGxD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAiBI,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAM/B,MAAM,CAAC,IAAI,CAAC,MAAsC;QAC9C,IAAI,CAAC,OAAO,mCAAQ,IAAI,CAAC,OAAO,GAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAE,CAAC;QACtD,OAAO,IAAI,CAAC;IAChB,CAAC;;AATQ,wDAAsB;AACxB,8BAAO,GAAkC;IAC5C,cAAc,EAAE,2BAAe;IAC/B,0BAA0B,EAAE,iDAAqC;CACpE,AAHa,CAGZ;iCAJO,sBAAsB;IAhBlC,IAAA,8BAAa,EAAC;QACX,OAAO,EAAE,CAAC,yCAAkB,CAAC;QAC7B,QAAQ,EAAE,CAAC,kDAAmB,CAAC;QAC/B,aAAa,EAAE,MAAM,CAAC,EAAE;YACpB,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,GAAG,IAAI,qDAAwB,EAAE,CAAC;YAC3E,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,4CAAgC;gBACzC,UAAU,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,OAAO;aACnD;YACD,qCAAgB;SACnB;QACD,aAAa,EAAE,QAAQ;KAC1B,CAAC;GACW,sBAAsB,CAUlC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { TransactionalConnection } from '../../connection/transactional-connection';
|
|
2
|
+
import { ScheduledTask } from '../../scheduler';
|
|
3
|
+
/**
|
|
4
|
+
* @description
|
|
5
|
+
* This service finds and cleans stale locks, which can occur if a worker instance is
|
|
6
|
+
* non-gracefully shut down while a task is ongoing, and the lock is never released.
|
|
7
|
+
*
|
|
8
|
+
* Failure to clean these stale locks will prevent the task from ever running again, since
|
|
9
|
+
* workers will assume it is locked by another processes and will ignore it.
|
|
10
|
+
*/
|
|
11
|
+
export declare class StaleTaskService {
|
|
12
|
+
private connection;
|
|
13
|
+
private taskIntervalMap;
|
|
14
|
+
constructor(connection: TransactionalConnection);
|
|
15
|
+
/**
|
|
16
|
+
* @description
|
|
17
|
+
* Cleans stale task locks from the database.
|
|
18
|
+
*/
|
|
19
|
+
cleanStaleLocksForTask(task: ScheduledTask): Promise<void>;
|
|
20
|
+
private fetchLockedTask;
|
|
21
|
+
/**
|
|
22
|
+
* Returns the interval in ms between one run of the task, and the next.
|
|
23
|
+
*/
|
|
24
|
+
private getScheduleIntervalMs;
|
|
25
|
+
private isStale;
|
|
26
|
+
private clearStaleLock;
|
|
27
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.StaleTaskService = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const cron_time_generator_1 = __importDefault(require("cron-time-generator"));
|
|
18
|
+
const croner_1 = require("croner");
|
|
19
|
+
const instrument_decorator_1 = require("../../common/instrument-decorator");
|
|
20
|
+
const config_1 = require("../../config");
|
|
21
|
+
const transactional_connection_1 = require("../../connection/transactional-connection");
|
|
22
|
+
const constants_1 = require("./constants");
|
|
23
|
+
const scheduled_task_record_entity_1 = require("./scheduled-task-record.entity");
|
|
24
|
+
/**
|
|
25
|
+
* @description
|
|
26
|
+
* This service finds and cleans stale locks, which can occur if a worker instance is
|
|
27
|
+
* non-gracefully shut down while a task is ongoing, and the lock is never released.
|
|
28
|
+
*
|
|
29
|
+
* Failure to clean these stale locks will prevent the task from ever running again, since
|
|
30
|
+
* workers will assume it is locked by another processes and will ignore it.
|
|
31
|
+
*/
|
|
32
|
+
let StaleTaskService = class StaleTaskService {
|
|
33
|
+
constructor(connection) {
|
|
34
|
+
this.connection = connection;
|
|
35
|
+
// Cache the interval for each taskId
|
|
36
|
+
this.taskIntervalMap = new Map();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* @description
|
|
40
|
+
* Cleans stale task locks from the database.
|
|
41
|
+
*/
|
|
42
|
+
async cleanStaleLocksForTask(task) {
|
|
43
|
+
const now = new Date();
|
|
44
|
+
try {
|
|
45
|
+
const lockedTask = await this.fetchLockedTask(task.id);
|
|
46
|
+
if (!lockedTask) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const intervalMs = this.getScheduleIntervalMs(task);
|
|
50
|
+
if (this.isStale(lockedTask, now, intervalMs)) {
|
|
51
|
+
await this.clearStaleLock(lockedTask);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
config_1.Logger.error(`Error cleaning up stale task locks: ${error instanceof Error ? error.message : String(error)}`, constants_1.loggerCtx);
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async fetchLockedTask(taskId) {
|
|
60
|
+
return this.connection.rawConnection
|
|
61
|
+
.getRepository(scheduled_task_record_entity_1.ScheduledTaskRecord)
|
|
62
|
+
.createQueryBuilder('task')
|
|
63
|
+
.select(['task.taskId', 'task.lockedAt'])
|
|
64
|
+
.where('task.lockedAt IS NOT NULL')
|
|
65
|
+
.andWhere('task.taskId = :taskId', { taskId })
|
|
66
|
+
.getOne();
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Returns the interval in ms between one run of the task, and the next.
|
|
70
|
+
*/
|
|
71
|
+
getScheduleIntervalMs(task) {
|
|
72
|
+
const cachedInterval = this.taskIntervalMap.get(task.id);
|
|
73
|
+
if (cachedInterval) {
|
|
74
|
+
return cachedInterval;
|
|
75
|
+
}
|
|
76
|
+
const schedule = task.options.schedule;
|
|
77
|
+
const scheduleString = typeof schedule === 'function' ? schedule(cron_time_generator_1.default) : schedule;
|
|
78
|
+
const cron = new croner_1.Cron(scheduleString);
|
|
79
|
+
const nextFn = typeof cron.nextRun === 'function'
|
|
80
|
+
? cron.nextRun.bind(cron)
|
|
81
|
+
: cron.next.bind(cron);
|
|
82
|
+
const next1 = nextFn();
|
|
83
|
+
if (!next1) {
|
|
84
|
+
throw new Error('Could not compute next run times');
|
|
85
|
+
}
|
|
86
|
+
const next2 = nextFn(next1);
|
|
87
|
+
if (!next2) {
|
|
88
|
+
throw new Error('Could not compute next run times');
|
|
89
|
+
}
|
|
90
|
+
const interval = next2.getTime() - next1.getTime();
|
|
91
|
+
this.taskIntervalMap.set(task.id, interval);
|
|
92
|
+
return interval;
|
|
93
|
+
}
|
|
94
|
+
isStale(task, now, intervalMs) {
|
|
95
|
+
if (!task.lockedAt) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
return now.getTime() - task.lockedAt.getTime() > intervalMs;
|
|
99
|
+
}
|
|
100
|
+
async clearStaleLock(staleTask) {
|
|
101
|
+
var _a, _b, _c;
|
|
102
|
+
const repo = this.connection.rawConnection.getRepository(scheduled_task_record_entity_1.ScheduledTaskRecord);
|
|
103
|
+
const result = await repo.update({ taskId: staleTask.taskId, lockedAt: (_a = staleTask.lockedAt) !== null && _a !== void 0 ? _a : undefined }, { lockedAt: null });
|
|
104
|
+
if (result.affected && result.affected > 0) {
|
|
105
|
+
config_1.Logger.verbose(`Successfully cleaned stale task locks for task "${staleTask.taskId}", which was locked at ${(_c = (_b = staleTask.lockedAt) === null || _b === void 0 ? void 0 : _b.toISOString()) !== null && _c !== void 0 ? _c : 'unknown'}`, constants_1.loggerCtx);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
config_1.Logger.debug(`Skipped clearing lock for task "${staleTask.taskId}" because the lock has changed since observation`, constants_1.loggerCtx);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
exports.StaleTaskService = StaleTaskService;
|
|
113
|
+
exports.StaleTaskService = StaleTaskService = __decorate([
|
|
114
|
+
(0, common_1.Injectable)(),
|
|
115
|
+
(0, instrument_decorator_1.Instrument)(),
|
|
116
|
+
__metadata("design:paramtypes", [transactional_connection_1.TransactionalConnection])
|
|
117
|
+
], StaleTaskService);
|
|
118
|
+
//# sourceMappingURL=stale-task.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stale-task.service.js","sourceRoot":"","sources":["../../../src/plugin/default-scheduler-plugin/stale-task.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vendure/core",
|
|
3
|
-
"version": "3.4.2-master-
|
|
3
|
+
"version": "3.4.2-master-202509110229",
|
|
4
4
|
"description": "A modern, headless ecommerce framework",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"@nestjs/platform-express": "^11.0.12",
|
|
50
50
|
"@nestjs/terminus": "^11.0.0",
|
|
51
51
|
"@nestjs/typeorm": "^11.0.0",
|
|
52
|
-
"@vendure/common": "^3.4.2-master-
|
|
52
|
+
"@vendure/common": "^3.4.2-master-202509110229",
|
|
53
53
|
"bcrypt": "^5.1.1",
|
|
54
54
|
"body-parser": "^1.20.2",
|
|
55
55
|
"cookie-session": "^2.1.0",
|
|
@@ -114,5 +114,5 @@
|
|
|
114
114
|
"optional": true
|
|
115
115
|
}
|
|
116
116
|
},
|
|
117
|
-
"gitHead": "
|
|
117
|
+
"gitHead": "aa2d4766b02fe4a93df5042da403e763c4af173b"
|
|
118
118
|
}
|