trigger.dev 3.0.0-beta.12 → 3.0.0-beta.14
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/index.js +16 -6
- package/dist/index.js.map +1 -1
- package/dist/workers/dev/worker-facade.js +26 -45
- package/dist/workers/dev/worker-setup.js +4 -1
- package/dist/workers/prod/entry-point.js +23 -3
- package/dist/workers/prod/worker-facade.js +38 -44
- package/dist/workers/prod/worker-setup.js +4 -1
- package/package.json +3 -3
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
// src/workers/dev/worker-facade.ts
|
|
2
2
|
import {
|
|
3
|
-
TaskExecutor,
|
|
4
3
|
DurableClock,
|
|
4
|
+
TaskExecutor,
|
|
5
|
+
ZodSchemaParsedError,
|
|
5
6
|
clock,
|
|
6
|
-
logLevels,
|
|
7
7
|
getEnvVar,
|
|
8
|
-
|
|
8
|
+
logLevels,
|
|
9
|
+
taskCatalog
|
|
9
10
|
} from "@trigger.dev/core/v3";
|
|
10
11
|
import {
|
|
11
12
|
ConsoleInterceptor,
|
|
@@ -20,7 +21,7 @@ import {
|
|
|
20
21
|
} from "@trigger.dev/core/v3";
|
|
21
22
|
|
|
22
23
|
// package.json
|
|
23
|
-
var version = "3.0.0-beta.
|
|
24
|
+
var version = "3.0.0-beta.14";
|
|
24
25
|
|
|
25
26
|
// src/workers/dev/worker-facade.ts
|
|
26
27
|
__WORKER_SETUP__;
|
|
@@ -30,7 +31,10 @@ var otelLogger = tracingSDK.getLogger("trigger-dev-worker", version);
|
|
|
30
31
|
var durableClock = new DurableClock();
|
|
31
32
|
clock.setGlobalClock(durableClock);
|
|
32
33
|
var tracer = new TriggerTracer({ tracer: otelTracer, logger: otelLogger });
|
|
33
|
-
var consoleInterceptor = new ConsoleInterceptor(
|
|
34
|
+
var consoleInterceptor = new ConsoleInterceptor(
|
|
35
|
+
otelLogger,
|
|
36
|
+
__PROJECT_CONFIG__.enableConsoleLogging ?? false
|
|
37
|
+
);
|
|
34
38
|
var devRuntimeManager = new DevRuntimeManager();
|
|
35
39
|
runtime.setGlobalRuntimeManager(devRuntimeManager);
|
|
36
40
|
var triggerLogLevel = getEnvVar("TRIGGER_LOG_LEVEL");
|
|
@@ -44,50 +48,19 @@ logger.setGlobalTaskLogger(otelTaskLogger);
|
|
|
44
48
|
var TaskFileImports = {};
|
|
45
49
|
var TaskFiles = {};
|
|
46
50
|
__TASKS__;
|
|
47
|
-
|
|
48
|
-
const result = [];
|
|
51
|
+
(() => {
|
|
49
52
|
for (const [importName, taskFile] of Object.entries(TaskFiles)) {
|
|
50
53
|
const fileImports = TaskFileImports[importName];
|
|
51
54
|
for (const [exportName, task] of Object.entries(fileImports ?? {})) {
|
|
52
|
-
if (task.
|
|
53
|
-
|
|
54
|
-
id: task.__trigger.id,
|
|
55
|
+
if (typeof task === "object" && task !== null && "id" in task && typeof task.id === "string") {
|
|
56
|
+
taskCatalog.registerTaskFileMetadata(task.id, {
|
|
55
57
|
exportName,
|
|
56
|
-
|
|
57
|
-
filePath: taskFile.filePath,
|
|
58
|
-
queue: task.__trigger.queue,
|
|
59
|
-
retry: task.__trigger.retry,
|
|
60
|
-
machine: task.__trigger.machine,
|
|
61
|
-
fns: task.__trigger.fns
|
|
58
|
+
filePath: taskFile.filePath
|
|
62
59
|
});
|
|
63
60
|
}
|
|
64
61
|
}
|
|
65
62
|
}
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
function getTaskMetadata() {
|
|
69
|
-
const result = getTasks();
|
|
70
|
-
return result.map((task) => {
|
|
71
|
-
const { fns, ...metadata } = task;
|
|
72
|
-
return metadata;
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
var tasks = getTasks();
|
|
76
|
-
runtime.registerTasks(tasks);
|
|
77
|
-
var taskExecutors = /* @__PURE__ */ new Map();
|
|
78
|
-
for (const task of tasks) {
|
|
79
|
-
taskExecutors.set(
|
|
80
|
-
task.id,
|
|
81
|
-
new TaskExecutor(task, {
|
|
82
|
-
tracer,
|
|
83
|
-
tracingSDK,
|
|
84
|
-
consoleInterceptor,
|
|
85
|
-
projectConfig: __PROJECT_CONFIG__,
|
|
86
|
-
importedConfig,
|
|
87
|
-
handleErrorFn: handleError
|
|
88
|
-
})
|
|
89
|
-
);
|
|
90
|
-
}
|
|
63
|
+
})();
|
|
91
64
|
var _execution;
|
|
92
65
|
var _isRunning = false;
|
|
93
66
|
var handler = new ZodMessageHandler({
|
|
@@ -110,9 +83,9 @@ var handler = new ZodMessageHandler({
|
|
|
110
83
|
return;
|
|
111
84
|
}
|
|
112
85
|
process.title = `trigger-dev-worker: ${execution.task.id} ${execution.run.id}`;
|
|
113
|
-
const
|
|
114
|
-
if (!
|
|
115
|
-
console.error(`Could not find
|
|
86
|
+
const task = taskCatalog.getTask(execution.task.id);
|
|
87
|
+
if (!task) {
|
|
88
|
+
console.error(`Could not find task ${execution.task.id}`);
|
|
116
89
|
await sender.send("TASK_RUN_COMPLETED", {
|
|
117
90
|
execution,
|
|
118
91
|
result: {
|
|
@@ -126,6 +99,14 @@ var handler = new ZodMessageHandler({
|
|
|
126
99
|
});
|
|
127
100
|
return;
|
|
128
101
|
}
|
|
102
|
+
const executor = new TaskExecutor(task, {
|
|
103
|
+
tracer,
|
|
104
|
+
tracingSDK,
|
|
105
|
+
consoleInterceptor,
|
|
106
|
+
projectConfig: __PROJECT_CONFIG__,
|
|
107
|
+
importedConfig,
|
|
108
|
+
handleErrorFn: handleError
|
|
109
|
+
});
|
|
129
110
|
try {
|
|
130
111
|
_execution = execution;
|
|
131
112
|
_isRunning = true;
|
|
@@ -157,7 +138,7 @@ var handler = new ZodMessageHandler({
|
|
|
157
138
|
process.on("message", async (msg) => {
|
|
158
139
|
await handler.handleMessage(msg);
|
|
159
140
|
});
|
|
160
|
-
var TASK_METADATA =
|
|
141
|
+
var TASK_METADATA = taskCatalog.getAllTaskMetadata();
|
|
161
142
|
sender.send("TASKS_READY", { tasks: TASK_METADATA }).catch((err) => {
|
|
162
143
|
if (err instanceof ZodSchemaParsedError) {
|
|
163
144
|
sender.send("TASKS_FAILED_TO_PARSE", { zodIssues: err.error.issues, tasks: TASK_METADATA });
|
|
@@ -3,9 +3,11 @@ import "source-map-support/register.js";
|
|
|
3
3
|
import { Resource } from "@opentelemetry/resources";
|
|
4
4
|
import {
|
|
5
5
|
SemanticInternalAttributes,
|
|
6
|
+
StandardTaskCatalog,
|
|
6
7
|
TracingSDK,
|
|
7
8
|
ZodMessageSender,
|
|
8
|
-
childToWorkerMessages
|
|
9
|
+
childToWorkerMessages,
|
|
10
|
+
taskCatalog
|
|
9
11
|
} from "@trigger.dev/core/v3";
|
|
10
12
|
__SETUP_IMPORTED_PROJECT_CONFIG__;
|
|
11
13
|
var tracingSDK = new TracingSDK({
|
|
@@ -34,6 +36,7 @@ process.on("uncaughtException", (error, origin) => {
|
|
|
34
36
|
console.error("Failed to send UNCAUGHT_EXCEPTION message", err);
|
|
35
37
|
});
|
|
36
38
|
});
|
|
39
|
+
taskCatalog.setGlobalTaskCatalog(new StandardTaskCatalog());
|
|
37
40
|
export {
|
|
38
41
|
sender,
|
|
39
42
|
tracingSDK
|
|
@@ -577,6 +577,7 @@ var logger2 = new SimpleLogger(`[${MACHINE_NAME2}][${SHORT_HASH}]`);
|
|
|
577
577
|
var ProdWorker = class {
|
|
578
578
|
constructor(port, host = "0.0.0.0") {
|
|
579
579
|
this.host = host;
|
|
580
|
+
process.on("SIGTERM", this.#handleSignal.bind(this, "SIGTERM"));
|
|
580
581
|
this.#coordinatorSocket = this.#createCoordinatorSocket(COORDINATOR_HOST);
|
|
581
582
|
this.#backgroundWorker = new ProdBackgroundWorker("worker.js", {
|
|
582
583
|
projectConfig: __PROJECT_CONFIG__,
|
|
@@ -669,6 +670,27 @@ var ProdWorker = class {
|
|
|
669
670
|
#backgroundWorker;
|
|
670
671
|
#httpServer;
|
|
671
672
|
#coordinatorSocket;
|
|
673
|
+
async #handleSignal(signal) {
|
|
674
|
+
logger2.log("Received signal", { signal });
|
|
675
|
+
if (signal === "SIGTERM") {
|
|
676
|
+
if (this.executing) {
|
|
677
|
+
const terminationGracePeriodSeconds = 60 * 60;
|
|
678
|
+
logger2.log("Waiting for attempt to complete before exiting", {
|
|
679
|
+
terminationGracePeriodSeconds
|
|
680
|
+
});
|
|
681
|
+
await setTimeout2(terminationGracePeriodSeconds * 1e3 - 5e3);
|
|
682
|
+
logger2.log("Termination timeout reached, exiting gracefully.");
|
|
683
|
+
} else {
|
|
684
|
+
logger2.log("Not executing, exiting immediately.");
|
|
685
|
+
}
|
|
686
|
+
await this.#exitGracefully();
|
|
687
|
+
}
|
|
688
|
+
logger2.log("Unhandled signal", { signal });
|
|
689
|
+
}
|
|
690
|
+
async #exitGracefully() {
|
|
691
|
+
await this.#backgroundWorker.close();
|
|
692
|
+
process.exit(0);
|
|
693
|
+
}
|
|
672
694
|
async #reconnect(isPostStart = false, reconnectImmediately = false) {
|
|
673
695
|
if (isPostStart) {
|
|
674
696
|
this.waitForPostStart = false;
|
|
@@ -713,8 +735,7 @@ var ProdWorker = class {
|
|
|
713
735
|
if (willCheckpointAndRestore) {
|
|
714
736
|
logger2.log("WARNING: Will checkpoint but also requested exit. This won't end well.");
|
|
715
737
|
}
|
|
716
|
-
await this.#
|
|
717
|
-
process.exit(0);
|
|
738
|
+
await this.#exitGracefully();
|
|
718
739
|
}
|
|
719
740
|
this.executing = false;
|
|
720
741
|
this.attemptFriendlyId = void 0;
|
|
@@ -1044,7 +1065,6 @@ var ProdWorker = class {
|
|
|
1044
1065
|
break;
|
|
1045
1066
|
}
|
|
1046
1067
|
}
|
|
1047
|
-
logger2.log("preStop", { url: req.url });
|
|
1048
1068
|
return reply.text("preStop ok");
|
|
1049
1069
|
}
|
|
1050
1070
|
case "/postStart": {
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
// src/workers/prod/worker-facade.ts
|
|
2
2
|
import {
|
|
3
|
+
DurableClock,
|
|
3
4
|
ProdChildToWorkerMessages,
|
|
4
5
|
ProdWorkerToChildMessages,
|
|
5
6
|
TaskExecutor,
|
|
6
7
|
ZodIpcConnection,
|
|
7
|
-
|
|
8
|
+
ZodSchemaParsedError,
|
|
8
9
|
clock,
|
|
9
10
|
getEnvVar,
|
|
10
11
|
logLevels,
|
|
11
|
-
|
|
12
|
+
taskCatalog
|
|
12
13
|
} from "@trigger.dev/core/v3";
|
|
13
14
|
import "source-map-support/register.js";
|
|
14
15
|
import {
|
|
@@ -22,7 +23,7 @@ import {
|
|
|
22
23
|
} from "@trigger.dev/core/v3";
|
|
23
24
|
|
|
24
25
|
// package.json
|
|
25
|
-
var version = "3.0.0-beta.
|
|
26
|
+
var version = "3.0.0-beta.14";
|
|
26
27
|
|
|
27
28
|
// src/workers/prod/worker-facade.ts
|
|
28
29
|
__WORKER_SETUP__;
|
|
@@ -32,7 +33,7 @@ var otelLogger = tracingSDK.getLogger("trigger-prod-worker", version);
|
|
|
32
33
|
var durableClock = new DurableClock();
|
|
33
34
|
clock.setGlobalClock(durableClock);
|
|
34
35
|
var tracer = new TriggerTracer({ tracer: otelTracer, logger: otelLogger });
|
|
35
|
-
var consoleInterceptor = new ConsoleInterceptor(otelLogger);
|
|
36
|
+
var consoleInterceptor = new ConsoleInterceptor(otelLogger, false);
|
|
36
37
|
var triggerLogLevel = getEnvVar("TRIGGER_LOG_LEVEL");
|
|
37
38
|
var configLogLevel = triggerLogLevel ? triggerLogLevel : importedConfig ? importedConfig.logLevel : __PROJECT_CONFIG__.logLevel;
|
|
38
39
|
var otelTaskLogger = new OtelTaskLogger({
|
|
@@ -44,50 +45,19 @@ logger.setGlobalTaskLogger(otelTaskLogger);
|
|
|
44
45
|
var TaskFileImports = {};
|
|
45
46
|
var TaskFiles = {};
|
|
46
47
|
__TASKS__;
|
|
47
|
-
|
|
48
|
-
const result = [];
|
|
48
|
+
(() => {
|
|
49
49
|
for (const [importName, taskFile] of Object.entries(TaskFiles)) {
|
|
50
50
|
const fileImports = TaskFileImports[importName];
|
|
51
51
|
for (const [exportName, task] of Object.entries(fileImports ?? {})) {
|
|
52
|
-
if (task.
|
|
53
|
-
|
|
54
|
-
id: task.__trigger.id,
|
|
52
|
+
if (typeof task === "object" && task !== null && "id" in task && typeof task.id === "string") {
|
|
53
|
+
taskCatalog.registerTaskFileMetadata(task.id, {
|
|
55
54
|
exportName,
|
|
56
|
-
|
|
57
|
-
filePath: taskFile.filePath,
|
|
58
|
-
queue: task.__trigger.queue,
|
|
59
|
-
retry: task.__trigger.retry,
|
|
60
|
-
machine: task.__trigger.machine,
|
|
61
|
-
fns: task.__trigger.fns
|
|
55
|
+
filePath: taskFile.filePath
|
|
62
56
|
});
|
|
63
57
|
}
|
|
64
58
|
}
|
|
65
59
|
}
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
function getTaskMetadata() {
|
|
69
|
-
const result = getTasks();
|
|
70
|
-
return result.map((task) => {
|
|
71
|
-
const { fns, ...metadata } = task;
|
|
72
|
-
return metadata;
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
var tasks = getTasks();
|
|
76
|
-
runtime.registerTasks(tasks);
|
|
77
|
-
var taskExecutors = /* @__PURE__ */ new Map();
|
|
78
|
-
for (const task of tasks) {
|
|
79
|
-
taskExecutors.set(
|
|
80
|
-
task.id,
|
|
81
|
-
new TaskExecutor(task, {
|
|
82
|
-
tracer,
|
|
83
|
-
tracingSDK,
|
|
84
|
-
consoleInterceptor,
|
|
85
|
-
projectConfig: __PROJECT_CONFIG__,
|
|
86
|
-
importedConfig,
|
|
87
|
-
handleErrorFn: handleError
|
|
88
|
-
})
|
|
89
|
-
);
|
|
90
|
-
}
|
|
60
|
+
})();
|
|
91
61
|
var _execution;
|
|
92
62
|
var _isRunning = false;
|
|
93
63
|
var zodIpc = new ZodIpcConnection({
|
|
@@ -112,9 +82,9 @@ var zodIpc = new ZodIpcConnection({
|
|
|
112
82
|
return;
|
|
113
83
|
}
|
|
114
84
|
process.title = `trigger-prod-worker: ${execution.task.id} ${execution.run.id}`;
|
|
115
|
-
const
|
|
116
|
-
if (!
|
|
117
|
-
console.error(`Could not find
|
|
85
|
+
const task = taskCatalog.getTask(execution.task.id);
|
|
86
|
+
if (!task) {
|
|
87
|
+
console.error(`Could not find task ${execution.task.id}`);
|
|
118
88
|
await sender.send("TASK_RUN_COMPLETED", {
|
|
119
89
|
execution,
|
|
120
90
|
result: {
|
|
@@ -128,6 +98,14 @@ var zodIpc = new ZodIpcConnection({
|
|
|
128
98
|
});
|
|
129
99
|
return;
|
|
130
100
|
}
|
|
101
|
+
const executor = new TaskExecutor(task, {
|
|
102
|
+
tracer,
|
|
103
|
+
tracingSDK,
|
|
104
|
+
consoleInterceptor,
|
|
105
|
+
projectConfig: __PROJECT_CONFIG__,
|
|
106
|
+
importedConfig,
|
|
107
|
+
handleErrorFn: handleError
|
|
108
|
+
});
|
|
131
109
|
try {
|
|
132
110
|
_execution = execution;
|
|
133
111
|
_isRunning = true;
|
|
@@ -150,6 +128,20 @@ var zodIpc = new ZodIpcConnection({
|
|
|
150
128
|
CLEANUP: async ({ flush, kill }, sender) => {
|
|
151
129
|
if (kill) {
|
|
152
130
|
await tracingSDK.flush();
|
|
131
|
+
if (_execution) {
|
|
132
|
+
await sender.send("TASK_RUN_COMPLETED", {
|
|
133
|
+
execution: _execution,
|
|
134
|
+
result: {
|
|
135
|
+
ok: false,
|
|
136
|
+
id: _execution.attempt.id,
|
|
137
|
+
error: {
|
|
138
|
+
type: "INTERNAL_ERROR",
|
|
139
|
+
code: TaskRunErrorCodes.GRACEFUL_EXIT_TIMEOUT,
|
|
140
|
+
message: "Worker process killed while attempt in progress."
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
153
145
|
await sender.send("READY_TO_DISPOSE", void 0);
|
|
154
146
|
} else {
|
|
155
147
|
if (flush) {
|
|
@@ -159,11 +151,13 @@ var zodIpc = new ZodIpcConnection({
|
|
|
159
151
|
}
|
|
160
152
|
}
|
|
161
153
|
});
|
|
154
|
+
process.on("SIGTERM", async () => {
|
|
155
|
+
});
|
|
162
156
|
var prodRuntimeManager = new ProdRuntimeManager(zodIpc, {
|
|
163
157
|
waitThresholdInMs: parseInt(process.env.TRIGGER_RUNTIME_WAIT_THRESHOLD_IN_MS ?? "30000", 10)
|
|
164
158
|
});
|
|
165
159
|
runtime.setGlobalRuntimeManager(prodRuntimeManager);
|
|
166
|
-
var TASK_METADATA =
|
|
160
|
+
var TASK_METADATA = taskCatalog.getAllTaskMetadata();
|
|
167
161
|
zodIpc.send("TASKS_READY", { tasks: TASK_METADATA }).catch((err) => {
|
|
168
162
|
if (err instanceof ZodSchemaParsedError) {
|
|
169
163
|
zodIpc.send("TASKS_FAILED_TO_PARSE", { zodIssues: err.error.issues, tasks: TASK_METADATA });
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
import { Resource } from "@opentelemetry/resources";
|
|
3
3
|
import {
|
|
4
4
|
SemanticInternalAttributes,
|
|
5
|
-
|
|
5
|
+
StandardTaskCatalog,
|
|
6
|
+
TracingSDK,
|
|
7
|
+
taskCatalog
|
|
6
8
|
} from "@trigger.dev/core/v3";
|
|
7
9
|
__SETUP_IMPORTED_PROJECT_CONFIG__;
|
|
8
10
|
var tracingSDK = new TracingSDK({
|
|
@@ -30,6 +32,7 @@ process.on("uncaughtException", (error, origin) => {
|
|
|
30
32
|
}
|
|
31
33
|
});
|
|
32
34
|
});
|
|
35
|
+
taskCatalog.setGlobalTaskCatalog(new StandardTaskCatalog());
|
|
33
36
|
export {
|
|
34
37
|
tracingSDK
|
|
35
38
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "trigger.dev",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.14",
|
|
4
4
|
"description": "A Command-Line Interface for Trigger.dev (v3) projects",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"typescript": "^5.3.3",
|
|
54
54
|
"vitest": "^0.34.4",
|
|
55
55
|
"xdg-app-paths": "^8.3.0",
|
|
56
|
-
"@trigger.dev/core-apps": "3.0.0-beta.
|
|
56
|
+
"@trigger.dev/core-apps": "3.0.0-beta.14",
|
|
57
57
|
"@trigger.dev/tsconfig": "0.0.0"
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"@opentelemetry/sdk-trace-base": "^1.22.0",
|
|
72
72
|
"@opentelemetry/sdk-trace-node": "^1.22.0",
|
|
73
73
|
"@opentelemetry/semantic-conventions": "^1.22.0",
|
|
74
|
-
"@trigger.dev/core": "^3.0.0-beta.
|
|
74
|
+
"@trigger.dev/core": "^3.0.0-beta.14",
|
|
75
75
|
"@types/degit": "^2.8.3",
|
|
76
76
|
"chalk": "^5.2.0",
|
|
77
77
|
"chokidar": "^3.5.3",
|