@trigger.dev/core 3.0.12 → 3.1.0
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/commonjs/v3/apiClient/core.d.ts +1 -1
- package/dist/commonjs/v3/apiClient/core.js +9 -1
- package/dist/commonjs/v3/apiClient/core.js.map +1 -1
- package/dist/commonjs/v3/apiClient/index.d.ts +64 -36
- package/dist/commonjs/v3/apiClient/index.js +100 -4
- package/dist/commonjs/v3/apiClient/index.js.map +1 -1
- package/dist/commonjs/v3/apiClient/runStream.d.ts +50 -0
- package/dist/commonjs/v3/apiClient/runStream.js +159 -0
- package/dist/commonjs/v3/apiClient/runStream.js.map +1 -0
- package/dist/commonjs/v3/apiClient/stream.d.ts +9 -0
- package/dist/commonjs/v3/apiClient/stream.js +37 -0
- package/dist/commonjs/v3/apiClient/stream.js.map +1 -0
- package/dist/commonjs/v3/apiClient/types.d.ts +4 -0
- package/dist/commonjs/v3/apiClientManager/index.d.ts +2 -1
- package/dist/commonjs/v3/apiClientManager/index.js +18 -7
- package/dist/commonjs/v3/apiClientManager/index.js.map +1 -1
- package/dist/commonjs/v3/apiClientManager/types.d.ts +7 -0
- package/dist/commonjs/v3/apps/process.d.ts +2 -0
- package/dist/commonjs/v3/apps/process.js +2 -0
- package/dist/commonjs/v3/apps/process.js.map +1 -1
- package/dist/commonjs/v3/errors.d.ts +11 -4
- package/dist/commonjs/v3/errors.js +213 -24
- package/dist/commonjs/v3/errors.js.map +1 -1
- package/dist/commonjs/v3/index.d.ts +2 -1
- package/dist/commonjs/v3/index.js +4 -3
- package/dist/commonjs/v3/index.js.map +1 -1
- package/dist/commonjs/v3/jwt.d.ts +10 -0
- package/dist/commonjs/v3/jwt.js +34 -0
- package/dist/commonjs/v3/jwt.js.map +1 -0
- package/dist/commonjs/v3/otel/index.d.ts +2 -3
- package/dist/commonjs/v3/otel/index.js +15 -21
- package/dist/commonjs/v3/otel/index.js.map +1 -1
- package/dist/commonjs/v3/otel/utils.d.ts +2 -0
- package/dist/commonjs/v3/otel/utils.js +24 -0
- package/dist/commonjs/v3/otel/utils.js.map +1 -0
- package/dist/commonjs/v3/runMetadata/index.d.ts +8 -6
- package/dist/commonjs/v3/runMetadata/index.js +18 -39
- package/dist/commonjs/v3/runMetadata/index.js.map +1 -1
- package/dist/commonjs/v3/runMetadata/manager.d.ts +17 -0
- package/dist/commonjs/v3/runMetadata/manager.js +116 -0
- package/dist/commonjs/v3/runMetadata/manager.js.map +1 -0
- package/dist/commonjs/v3/runMetadata/noopManager.d.ts +12 -0
- package/dist/commonjs/v3/runMetadata/noopManager.js +26 -0
- package/dist/commonjs/v3/runMetadata/noopManager.js.map +1 -0
- package/dist/commonjs/v3/runMetadata/types.d.ts +11 -0
- package/dist/commonjs/v3/runMetadata/types.js +3 -0
- package/dist/commonjs/v3/runMetadata/types.js.map +1 -0
- package/dist/commonjs/v3/runtime/noopRuntimeManager.js +5 -1
- package/dist/commonjs/v3/runtime/noopRuntimeManager.js.map +1 -1
- package/dist/commonjs/v3/schemas/api.d.ts +193 -64
- package/dist/commonjs/v3/schemas/api.js +34 -4
- package/dist/commonjs/v3/schemas/api.js.map +1 -1
- package/dist/commonjs/v3/schemas/build.d.ts +12 -12
- package/dist/commonjs/v3/schemas/common.d.ts +24 -45
- package/dist/commonjs/v3/schemas/common.js +5 -23
- package/dist/commonjs/v3/schemas/common.js.map +1 -1
- package/dist/commonjs/v3/schemas/messages.d.ts +127 -123
- package/dist/commonjs/v3/schemas/messages.js +2 -0
- package/dist/commonjs/v3/schemas/messages.js.map +1 -1
- package/dist/commonjs/v3/schemas/schemas.d.ts +2 -2
- package/dist/commonjs/v3/tracer.js +2 -2
- package/dist/commonjs/v3/types/idempotencyKeys.d.ts +7 -0
- package/dist/commonjs/v3/types/idempotencyKeys.js +3 -0
- package/dist/commonjs/v3/types/idempotencyKeys.js.map +1 -0
- package/dist/commonjs/v3/types/index.d.ts +9 -63
- package/dist/commonjs/v3/types/index.js +2 -0
- package/dist/commonjs/v3/types/index.js.map +1 -1
- package/dist/commonjs/v3/types/schemas.d.ts +44 -0
- package/dist/commonjs/v3/types/schemas.js +41 -0
- package/dist/commonjs/v3/types/schemas.js.map +1 -0
- package/dist/commonjs/v3/types/tasks.d.ts +473 -0
- package/dist/commonjs/v3/types/tasks.js +42 -0
- package/dist/commonjs/v3/types/tasks.js.map +1 -0
- package/dist/commonjs/v3/utils/flattenAttributes.d.ts +2 -1
- package/dist/commonjs/v3/utils/flattenAttributes.js +39 -16
- package/dist/commonjs/v3/utils/flattenAttributes.js.map +1 -1
- package/dist/commonjs/v3/utils/getEnv.d.ts +1 -0
- package/dist/commonjs/v3/utils/getEnv.js +12 -0
- package/dist/commonjs/v3/utils/getEnv.js.map +1 -1
- package/dist/commonjs/v3/utils/globals.d.ts +2 -2
- package/dist/commonjs/v3/utils/globals.js.map +1 -1
- package/dist/commonjs/v3/utils/ioSerialization.d.ts +1 -0
- package/dist/commonjs/v3/utils/ioSerialization.js +21 -3
- package/dist/commonjs/v3/utils/ioSerialization.js.map +1 -1
- package/dist/commonjs/v3/utils/safeAsyncLocalStorage.d.ts +1 -0
- package/dist/commonjs/v3/utils/safeAsyncLocalStorage.js +3 -0
- package/dist/commonjs/v3/utils/safeAsyncLocalStorage.js.map +1 -1
- package/dist/commonjs/v3/workers/index.d.ts +2 -1
- package/dist/commonjs/v3/workers/index.js +4 -1
- package/dist/commonjs/v3/workers/index.js.map +1 -1
- package/dist/commonjs/v3/workers/taskExecutor.js +39 -7
- package/dist/commonjs/v3/workers/taskExecutor.js.map +1 -1
- package/dist/commonjs/version.js +1 -1
- package/dist/esm/v3/apiClient/core.d.ts +1 -1
- package/dist/esm/v3/apiClient/core.js +9 -1
- package/dist/esm/v3/apiClient/core.js.map +1 -1
- package/dist/esm/v3/apiClient/index.d.ts +64 -36
- package/dist/esm/v3/apiClient/index.js +100 -4
- package/dist/esm/v3/apiClient/index.js.map +1 -1
- package/dist/esm/v3/apiClient/runStream.d.ts +50 -0
- package/dist/esm/v3/apiClient/runStream.js +154 -0
- package/dist/esm/v3/apiClient/runStream.js.map +1 -0
- package/dist/esm/v3/apiClient/stream.d.ts +9 -0
- package/dist/esm/v3/apiClient/stream.js +33 -0
- package/dist/esm/v3/apiClient/stream.js.map +1 -0
- package/dist/esm/v3/apiClient/types.d.ts +4 -0
- package/dist/esm/v3/apiClientManager/index.d.ts +2 -1
- package/dist/esm/v3/apiClientManager/index.js +18 -7
- package/dist/esm/v3/apiClientManager/index.js.map +1 -1
- package/dist/esm/v3/apiClientManager/types.d.ts +7 -0
- package/dist/esm/v3/apps/process.d.ts +2 -0
- package/dist/esm/v3/apps/process.js +2 -0
- package/dist/esm/v3/apps/process.js.map +1 -1
- package/dist/esm/v3/errors.d.ts +11 -4
- package/dist/esm/v3/errors.js +210 -23
- package/dist/esm/v3/errors.js.map +1 -1
- package/dist/esm/v3/index.d.ts +2 -1
- package/dist/esm/v3/index.js +2 -1
- package/dist/esm/v3/index.js.map +1 -1
- package/dist/esm/v3/jwt.d.ts +10 -0
- package/dist/esm/v3/jwt.js +29 -0
- package/dist/esm/v3/jwt.js.map +1 -0
- package/dist/esm/v3/otel/index.d.ts +2 -3
- package/dist/esm/v3/otel/index.js +1 -20
- package/dist/esm/v3/otel/index.js.map +1 -1
- package/dist/esm/v3/otel/utils.d.ts +2 -0
- package/dist/esm/v3/otel/utils.js +21 -0
- package/dist/esm/v3/otel/utils.js.map +1 -0
- package/dist/esm/v3/runMetadata/index.d.ts +8 -6
- package/dist/esm/v3/runMetadata/index.js +20 -41
- package/dist/esm/v3/runMetadata/index.js.map +1 -1
- package/dist/esm/v3/runMetadata/manager.d.ts +17 -0
- package/dist/esm/v3/runMetadata/manager.js +112 -0
- package/dist/esm/v3/runMetadata/manager.js.map +1 -0
- package/dist/esm/v3/runMetadata/noopManager.d.ts +12 -0
- package/dist/esm/v3/runMetadata/noopManager.js +22 -0
- package/dist/esm/v3/runMetadata/noopManager.js.map +1 -0
- package/dist/esm/v3/runMetadata/types.d.ts +11 -0
- package/dist/esm/v3/runMetadata/types.js +2 -0
- package/dist/esm/v3/runMetadata/types.js.map +1 -0
- package/dist/esm/v3/runtime/noopRuntimeManager.js +5 -1
- package/dist/esm/v3/runtime/noopRuntimeManager.js.map +1 -1
- package/dist/esm/v3/schemas/api.d.ts +193 -64
- package/dist/esm/v3/schemas/api.js +33 -3
- package/dist/esm/v3/schemas/api.js.map +1 -1
- package/dist/esm/v3/schemas/build.d.ts +12 -12
- package/dist/esm/v3/schemas/common.d.ts +24 -45
- package/dist/esm/v3/schemas/common.js +4 -22
- package/dist/esm/v3/schemas/common.js.map +1 -1
- package/dist/esm/v3/schemas/messages.d.ts +127 -123
- package/dist/esm/v3/schemas/messages.js +2 -0
- package/dist/esm/v3/schemas/messages.js.map +1 -1
- package/dist/esm/v3/schemas/schemas.d.ts +2 -2
- package/dist/esm/v3/tracer.js +1 -1
- package/dist/esm/v3/types/idempotencyKeys.d.ts +7 -0
- package/dist/esm/v3/types/idempotencyKeys.js +2 -0
- package/dist/esm/v3/types/idempotencyKeys.js.map +1 -0
- package/dist/esm/v3/types/index.d.ts +9 -63
- package/dist/esm/v3/types/index.js +2 -0
- package/dist/esm/v3/types/index.js.map +1 -1
- package/dist/esm/v3/types/schemas.d.ts +44 -0
- package/dist/esm/v3/types/schemas.js +38 -0
- package/dist/esm/v3/types/schemas.js.map +1 -0
- package/dist/esm/v3/types/tasks.d.ts +473 -0
- package/dist/esm/v3/types/tasks.js +37 -0
- package/dist/esm/v3/types/tasks.js.map +1 -0
- package/dist/esm/v3/utils/flattenAttributes.d.ts +2 -1
- package/dist/esm/v3/utils/flattenAttributes.js +38 -15
- package/dist/esm/v3/utils/flattenAttributes.js.map +1 -1
- package/dist/esm/v3/utils/getEnv.d.ts +1 -0
- package/dist/esm/v3/utils/getEnv.js +11 -0
- package/dist/esm/v3/utils/getEnv.js.map +1 -1
- package/dist/esm/v3/utils/globals.d.ts +2 -2
- package/dist/esm/v3/utils/globals.js.map +1 -1
- package/dist/esm/v3/utils/ioSerialization.d.ts +1 -0
- package/dist/esm/v3/utils/ioSerialization.js +20 -3
- package/dist/esm/v3/utils/ioSerialization.js.map +1 -1
- package/dist/esm/v3/utils/safeAsyncLocalStorage.d.ts +1 -0
- package/dist/esm/v3/utils/safeAsyncLocalStorage.js +3 -0
- package/dist/esm/v3/utils/safeAsyncLocalStorage.js.map +1 -1
- package/dist/esm/v3/workers/index.d.ts +2 -1
- package/dist/esm/v3/workers/index.js +2 -1
- package/dist/esm/v3/workers/index.js.map +1 -1
- package/dist/esm/v3/workers/taskExecutor.js +40 -8
- package/dist/esm/v3/workers/taskExecutor.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +35 -1
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { SubscribeRunRawShape } from "../schemas/api.js";
|
|
2
|
+
import { conditionallyImportAndParsePacket, parsePacket, } from "../utils/ioSerialization.js";
|
|
3
|
+
import { createAsyncIterableStream, zodShapeStream } from "./stream.js";
|
|
4
|
+
export function runShapeStream(url, options) {
|
|
5
|
+
return new RunSubscription(url, options);
|
|
6
|
+
}
|
|
7
|
+
export class RunSubscription {
|
|
8
|
+
url;
|
|
9
|
+
options;
|
|
10
|
+
abortController;
|
|
11
|
+
unsubscribeShape;
|
|
12
|
+
stream;
|
|
13
|
+
packetCache = new Map();
|
|
14
|
+
constructor(url, options) {
|
|
15
|
+
this.url = url;
|
|
16
|
+
this.options = options;
|
|
17
|
+
this.abortController = new AbortController();
|
|
18
|
+
const source = new ReadableStream({
|
|
19
|
+
start: async (controller) => {
|
|
20
|
+
this.unsubscribeShape = await zodShapeStream(SubscribeRunRawShape, this.url, async (shape) => {
|
|
21
|
+
controller.enqueue(shape);
|
|
22
|
+
if (this.options?.closeOnComplete &&
|
|
23
|
+
shape.completedAt &&
|
|
24
|
+
!this.abortController.signal.aborted) {
|
|
25
|
+
controller.close();
|
|
26
|
+
this.abortController.abort();
|
|
27
|
+
}
|
|
28
|
+
}, {
|
|
29
|
+
signal: this.abortController.signal,
|
|
30
|
+
fetchClient: this.options?.fetchClient,
|
|
31
|
+
headers: this.options?.headers,
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
cancel: () => {
|
|
35
|
+
this.unsubscribe();
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
this.stream = createAsyncIterableStream(source, {
|
|
39
|
+
transform: async (chunk, controller) => {
|
|
40
|
+
const run = await this.transformRunShape(chunk);
|
|
41
|
+
controller.enqueue(run);
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
unsubscribe() {
|
|
46
|
+
if (!this.abortController.signal.aborted) {
|
|
47
|
+
this.abortController.abort();
|
|
48
|
+
}
|
|
49
|
+
this.unsubscribeShape?.();
|
|
50
|
+
}
|
|
51
|
+
[Symbol.asyncIterator]() {
|
|
52
|
+
return this.stream[Symbol.asyncIterator]();
|
|
53
|
+
}
|
|
54
|
+
getReader() {
|
|
55
|
+
return this.stream.getReader();
|
|
56
|
+
}
|
|
57
|
+
async transformRunShape(row) {
|
|
58
|
+
const payloadPacket = row.payloadType
|
|
59
|
+
? { data: row.payload ?? undefined, dataType: row.payloadType }
|
|
60
|
+
: undefined;
|
|
61
|
+
const outputPacket = row.outputType
|
|
62
|
+
? { data: row.output ?? undefined, dataType: row.outputType }
|
|
63
|
+
: undefined;
|
|
64
|
+
const [payload, output] = await Promise.all([
|
|
65
|
+
{ packet: payloadPacket, key: "payload" },
|
|
66
|
+
{ packet: outputPacket, key: "output" },
|
|
67
|
+
].map(async ({ packet, key }) => {
|
|
68
|
+
if (!packet) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const cachedResult = this.packetCache.get(`${row.friendlyId}/${key}`);
|
|
72
|
+
if (typeof cachedResult !== "undefined") {
|
|
73
|
+
return cachedResult;
|
|
74
|
+
}
|
|
75
|
+
const result = await conditionallyImportAndParsePacket(packet);
|
|
76
|
+
this.packetCache.set(`${row.friendlyId}/${key}`, result);
|
|
77
|
+
return result;
|
|
78
|
+
}));
|
|
79
|
+
const metadata = row.metadata && row.metadataType
|
|
80
|
+
? await parsePacket({ data: row.metadata, dataType: row.metadataType })
|
|
81
|
+
: undefined;
|
|
82
|
+
return {
|
|
83
|
+
id: row.friendlyId,
|
|
84
|
+
payload,
|
|
85
|
+
output,
|
|
86
|
+
createdAt: row.createdAt,
|
|
87
|
+
updatedAt: row.updatedAt,
|
|
88
|
+
taskIdentifier: row.taskIdentifier,
|
|
89
|
+
number: row.number,
|
|
90
|
+
status: apiStatusFromRunStatus(row.status),
|
|
91
|
+
durationMs: row.usageDurationMs,
|
|
92
|
+
costInCents: row.costInCents,
|
|
93
|
+
baseCostInCents: row.baseCostInCents,
|
|
94
|
+
tags: row.runTags ?? [],
|
|
95
|
+
idempotencyKey: row.idempotencyKey ?? undefined,
|
|
96
|
+
expiredAt: row.expiredAt ?? undefined,
|
|
97
|
+
finishedAt: row.completedAt ?? undefined,
|
|
98
|
+
startedAt: row.startedAt ?? undefined,
|
|
99
|
+
delayedUntil: row.delayUntil ?? undefined,
|
|
100
|
+
queuedAt: row.queuedAt ?? undefined,
|
|
101
|
+
error: row.error ?? undefined,
|
|
102
|
+
isTest: row.isTest,
|
|
103
|
+
metadata,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function apiStatusFromRunStatus(status) {
|
|
108
|
+
switch (status) {
|
|
109
|
+
case "DELAYED": {
|
|
110
|
+
return "DELAYED";
|
|
111
|
+
}
|
|
112
|
+
case "WAITING_FOR_DEPLOY": {
|
|
113
|
+
return "WAITING_FOR_DEPLOY";
|
|
114
|
+
}
|
|
115
|
+
case "PENDING": {
|
|
116
|
+
return "QUEUED";
|
|
117
|
+
}
|
|
118
|
+
case "PAUSED":
|
|
119
|
+
case "WAITING_TO_RESUME": {
|
|
120
|
+
return "FROZEN";
|
|
121
|
+
}
|
|
122
|
+
case "RETRYING_AFTER_FAILURE": {
|
|
123
|
+
return "REATTEMPTING";
|
|
124
|
+
}
|
|
125
|
+
case "EXECUTING": {
|
|
126
|
+
return "EXECUTING";
|
|
127
|
+
}
|
|
128
|
+
case "CANCELED": {
|
|
129
|
+
return "CANCELED";
|
|
130
|
+
}
|
|
131
|
+
case "COMPLETED_SUCCESSFULLY": {
|
|
132
|
+
return "COMPLETED";
|
|
133
|
+
}
|
|
134
|
+
case "SYSTEM_FAILURE": {
|
|
135
|
+
return "SYSTEM_FAILURE";
|
|
136
|
+
}
|
|
137
|
+
case "INTERRUPTED": {
|
|
138
|
+
return "INTERRUPTED";
|
|
139
|
+
}
|
|
140
|
+
case "CRASHED": {
|
|
141
|
+
return "CRASHED";
|
|
142
|
+
}
|
|
143
|
+
case "COMPLETED_WITH_ERRORS": {
|
|
144
|
+
return "FAILED";
|
|
145
|
+
}
|
|
146
|
+
case "EXPIRED": {
|
|
147
|
+
return "EXPIRED";
|
|
148
|
+
}
|
|
149
|
+
default: {
|
|
150
|
+
throw new Error(`Unknown status: ${status}`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=runStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runStream.js","sourceRoot":"","sources":["../../../../src/v3/apiClient/runStream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export type ZodShapeStreamOptions = {
|
|
3
|
+
headers?: Record<string, string>;
|
|
4
|
+
fetchClient?: typeof fetch;
|
|
5
|
+
signal?: AbortSignal;
|
|
6
|
+
};
|
|
7
|
+
export declare function zodShapeStream<TShapeSchema extends z.ZodTypeAny>(schema: TShapeSchema, url: string, callback: (shape: z.output<TShapeSchema>) => void | Promise<void>, options?: ZodShapeStreamOptions): Promise<() => void>;
|
|
8
|
+
export type AsyncIterableStream<T> = AsyncIterable<T> & ReadableStream<T>;
|
|
9
|
+
export declare function createAsyncIterableStream<S, T>(source: ReadableStream<S>, transformer: Transformer<S, T>): AsyncIterableStream<T>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export async function zodShapeStream(schema, url, callback, options) {
|
|
2
|
+
const { ShapeStream, Shape } = await import("@electric-sql/client");
|
|
3
|
+
const stream = new ShapeStream({
|
|
4
|
+
url,
|
|
5
|
+
headers: options?.headers,
|
|
6
|
+
fetchClient: options?.fetchClient,
|
|
7
|
+
signal: options?.signal,
|
|
8
|
+
});
|
|
9
|
+
const shape = new Shape(stream);
|
|
10
|
+
const initialValue = await shape.value;
|
|
11
|
+
for (const shapeRow of initialValue.values()) {
|
|
12
|
+
await callback(schema.parse(shapeRow));
|
|
13
|
+
}
|
|
14
|
+
return shape.subscribe(async (newShape) => {
|
|
15
|
+
for (const shapeRow of newShape.values()) {
|
|
16
|
+
await callback(schema.parse(shapeRow));
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
export function createAsyncIterableStream(source, transformer) {
|
|
21
|
+
const transformedStream = source.pipeThrough(new TransformStream(transformer));
|
|
22
|
+
transformedStream[Symbol.asyncIterator] = () => {
|
|
23
|
+
const reader = transformedStream.getReader();
|
|
24
|
+
return {
|
|
25
|
+
async next() {
|
|
26
|
+
const { done, value } = await reader.read();
|
|
27
|
+
return done ? { done: true, value: undefined } : { done: false, value };
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
return transformedStream;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../../src/v3/apiClient/stream.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAoB,EACpB,GAAW,EACX,QAAiE,EACjE,OAA+B;IAE/B,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAEpE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAwB;QACpD,GAAG;QACH,OAAO,EAAE,OAAO,EAAE,OAAO;QACzB,WAAW,EAAE,OAAO,EAAE,WAAW;QACjC,MAAM,EAAE,OAAO,EAAE,MAAM;KACxB,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAEhC,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC;IAEvC,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;QAC7C,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QACxC,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAID,MAAM,UAAU,yBAAyB,CACvC,MAAyB,EACzB,WAA8B;IAE9B,MAAM,iBAAiB,GAAQ,MAAM,CAAC,WAAW,CAAC,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC;IAEpF,iBAAiB,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,EAAE;QAC7C,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,EAAE,CAAC;QAC7C,OAAO;YACL,KAAK,CAAC,IAAI;gBACR,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAC1E,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
|
|
@@ -31,3 +31,7 @@ export interface ListRunsQueryParams extends CursorPageParams {
|
|
|
31
31
|
export interface ListProjectRunsQueryParams extends CursorPageParams, ListRunsQueryParams {
|
|
32
32
|
env?: Array<"dev" | "staging" | "prod"> | "dev" | "staging" | "prod";
|
|
33
33
|
}
|
|
34
|
+
export interface SubscribeToRunsQueryParams {
|
|
35
|
+
tasks?: Array<string> | string;
|
|
36
|
+
tags?: Array<string> | string;
|
|
37
|
+
}
|
|
@@ -9,10 +9,11 @@ export declare class APIClientManagerAPI {
|
|
|
9
9
|
private constructor();
|
|
10
10
|
static getInstance(): APIClientManagerAPI;
|
|
11
11
|
disable(): void;
|
|
12
|
-
setGlobalAPIClientConfiguration(config: ApiClientConfiguration): boolean;
|
|
13
12
|
get baseURL(): string | undefined;
|
|
14
13
|
get accessToken(): string | undefined;
|
|
15
14
|
get client(): ApiClient | undefined;
|
|
16
15
|
clientOrThrow(): ApiClient;
|
|
16
|
+
runWithConfig<R extends (...args: any[]) => Promise<any>>(config: ApiClientConfiguration, fn: R): Promise<ReturnType<R>>;
|
|
17
|
+
setGlobalAPIClientConfiguration(config: ApiClientConfiguration): boolean;
|
|
17
18
|
apiClientMissingError(): "You need to set the TRIGGER_API_URL and TRIGGER_SECRET_KEY environment variables. See https://trigger.dev/docs/management/overview#authentication" | "You need to set the TRIGGER_API_URL environment variable. See https://trigger.dev/docs/management/overview#authentication" | "You need to set the TRIGGER_SECRET_KEY environment variable. See https://trigger.dev/docs/management/overview#authentication" | "Unknown error";
|
|
18
19
|
}
|
|
@@ -20,16 +20,16 @@ export class APIClientManagerAPI {
|
|
|
20
20
|
disable() {
|
|
21
21
|
unregisterGlobal(API_NAME);
|
|
22
22
|
}
|
|
23
|
-
setGlobalAPIClientConfiguration(config) {
|
|
24
|
-
return registerGlobal(API_NAME, config);
|
|
25
|
-
}
|
|
26
23
|
get baseURL() {
|
|
27
|
-
const
|
|
28
|
-
return
|
|
24
|
+
const config = this.#getConfig();
|
|
25
|
+
return config?.baseURL ?? getEnvVar("TRIGGER_API_URL") ?? "https://api.trigger.dev";
|
|
29
26
|
}
|
|
30
27
|
get accessToken() {
|
|
31
|
-
const
|
|
32
|
-
return
|
|
28
|
+
const config = this.#getConfig();
|
|
29
|
+
return (config?.secretKey ??
|
|
30
|
+
config?.accessToken ??
|
|
31
|
+
getEnvVar("TRIGGER_SECRET_KEY") ??
|
|
32
|
+
getEnvVar("TRIGGER_ACCESS_TOKEN"));
|
|
33
33
|
}
|
|
34
34
|
get client() {
|
|
35
35
|
if (!this.baseURL || !this.accessToken) {
|
|
@@ -43,6 +43,17 @@ export class APIClientManagerAPI {
|
|
|
43
43
|
}
|
|
44
44
|
return new ApiClient(this.baseURL, this.accessToken);
|
|
45
45
|
}
|
|
46
|
+
runWithConfig(config, fn) {
|
|
47
|
+
const originalConfig = this.#getConfig();
|
|
48
|
+
const $config = { ...originalConfig, ...config };
|
|
49
|
+
registerGlobal(API_NAME, $config, true);
|
|
50
|
+
return fn().finally(() => {
|
|
51
|
+
registerGlobal(API_NAME, originalConfig, true);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
setGlobalAPIClientConfiguration(config) {
|
|
55
|
+
return registerGlobal(API_NAME, config);
|
|
56
|
+
}
|
|
46
57
|
#getConfig() {
|
|
47
58
|
return getGlobal(API_NAME);
|
|
48
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v3/apiClientManager/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,QAAQ,GAAG,YAAY,CAAC;AAE9B,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,mBAAmB;IACtB,MAAM,CAAC,SAAS,CAAuB;IAE/C,gBAAuB,CAAC;IAEjB,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAC7C,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,OAAO;QACZ,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v3/apiClientManager/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { type ApiRequestOptions } from "../apiClient/index.js";
|
|
2
2
|
export type ApiClientConfiguration = {
|
|
3
3
|
baseURL?: string;
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated Use `accessToken` instead.
|
|
6
|
+
*/
|
|
4
7
|
secretKey?: string;
|
|
8
|
+
/**
|
|
9
|
+
* The access token to authenticate with the Trigger API.
|
|
10
|
+
*/
|
|
11
|
+
accessToken?: string;
|
|
5
12
|
requestOptions?: ApiRequestOptions;
|
|
6
13
|
};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** This was used by the old build system in case of indexing failures */
|
|
1
2
|
export const EXIT_CODE_ALREADY_HANDLED = 111;
|
|
3
|
+
/** This means what it says and is only set once we have completed the attempt */
|
|
2
4
|
export const EXIT_CODE_CHILD_NONZERO = 112;
|
|
3
5
|
//# sourceMappingURL=process.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../../src/v3/apps/process.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAC7C,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC"}
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../../src/v3/apps/process.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAC7C,iFAAiF;AACjF,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC"}
|
package/dist/esm/v3/errors.d.ts
CHANGED
|
@@ -7,10 +7,15 @@ import { ExceptionEventProperties } from "./schemas/openTelemetry.js";
|
|
|
7
7
|
export declare class AbortTaskRunError extends Error {
|
|
8
8
|
constructor(message: string);
|
|
9
9
|
}
|
|
10
|
+
export declare class TaskPayloadParsedError extends Error {
|
|
11
|
+
readonly cause: unknown;
|
|
12
|
+
constructor(cause: unknown);
|
|
13
|
+
}
|
|
10
14
|
export declare function parseError(error: unknown): TaskRunError;
|
|
11
15
|
export declare function createErrorTaskError(error: TaskRunError): any;
|
|
12
16
|
export declare function createJsonErrorObject(error: TaskRunError): SerializedError;
|
|
13
17
|
export declare function sanitizeError(error: TaskRunError): TaskRunError;
|
|
18
|
+
export declare function shouldRetryError(error: TaskRunError): boolean;
|
|
14
19
|
export declare function correctErrorStackTrace(stackTrace: string, projectDir?: string, options?: {
|
|
15
20
|
removeFirstLine?: boolean;
|
|
16
21
|
isDev?: boolean;
|
|
@@ -65,11 +70,13 @@ export declare class SigKillTimeoutProcessError extends Error {
|
|
|
65
70
|
export declare class GracefulExitTimeoutError extends Error {
|
|
66
71
|
constructor();
|
|
67
72
|
}
|
|
73
|
+
type ErrorLink = {
|
|
74
|
+
name: string;
|
|
75
|
+
href: string;
|
|
76
|
+
magic?: "CONTACT_FORM";
|
|
77
|
+
};
|
|
68
78
|
type EnhanceError<T extends TaskRunError | ExceptionEventProperties> = T & {
|
|
69
|
-
link?:
|
|
70
|
-
name: string;
|
|
71
|
-
href: string;
|
|
72
|
-
};
|
|
79
|
+
link?: ErrorLink;
|
|
73
80
|
};
|
|
74
81
|
export declare function taskRunErrorEnhancer(error: TaskRunError): EnhanceError<TaskRunError>;
|
|
75
82
|
export declare function exceptionEventEnhancer(exception: ExceptionEventProperties): EnhanceError<ExceptionEventProperties>;
|
package/dist/esm/v3/errors.js
CHANGED
|
@@ -2,12 +2,22 @@ import { ImportTaskFileErrors } from "./schemas/build.js";
|
|
|
2
2
|
import { TaskRunErrorCodes, } from "./schemas/common.js";
|
|
3
3
|
import { TaskMetadataFailedToParseData } from "./schemas/messages.js";
|
|
4
4
|
import { links } from "./links.js";
|
|
5
|
+
import { assertExhaustive } from "../utils.js";
|
|
5
6
|
export class AbortTaskRunError extends Error {
|
|
6
7
|
constructor(message) {
|
|
7
8
|
super(message);
|
|
8
9
|
this.name = "AbortTaskRunError";
|
|
9
10
|
}
|
|
10
11
|
}
|
|
12
|
+
export class TaskPayloadParsedError extends Error {
|
|
13
|
+
cause;
|
|
14
|
+
constructor(cause) {
|
|
15
|
+
const causeMessage = cause instanceof Error ? cause.message : String(cause);
|
|
16
|
+
super("Parsing payload with schema failed: " + causeMessage);
|
|
17
|
+
this.name = "TaskPayloadParsedError";
|
|
18
|
+
this.cause = cause;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
11
21
|
export function parseError(error) {
|
|
12
22
|
if (error instanceof Error) {
|
|
13
23
|
return {
|
|
@@ -118,6 +128,54 @@ export function sanitizeError(error) {
|
|
|
118
128
|
}
|
|
119
129
|
}
|
|
120
130
|
}
|
|
131
|
+
export function shouldRetryError(error) {
|
|
132
|
+
switch (error.type) {
|
|
133
|
+
case "INTERNAL_ERROR": {
|
|
134
|
+
switch (error.code) {
|
|
135
|
+
case "COULD_NOT_FIND_EXECUTOR":
|
|
136
|
+
case "COULD_NOT_FIND_TASK":
|
|
137
|
+
case "COULD_NOT_IMPORT_TASK":
|
|
138
|
+
case "CONFIGURED_INCORRECTLY":
|
|
139
|
+
case "TASK_ALREADY_RUNNING":
|
|
140
|
+
case "TASK_PROCESS_SIGKILL_TIMEOUT":
|
|
141
|
+
case "TASK_PROCESS_SIGSEGV":
|
|
142
|
+
case "TASK_PROCESS_OOM_KILLED":
|
|
143
|
+
case "TASK_PROCESS_MAYBE_OOM_KILLED":
|
|
144
|
+
case "TASK_RUN_CANCELLED":
|
|
145
|
+
case "MAX_DURATION_EXCEEDED":
|
|
146
|
+
case "DISK_SPACE_EXCEEDED":
|
|
147
|
+
case "TASK_RUN_HEARTBEAT_TIMEOUT":
|
|
148
|
+
return false;
|
|
149
|
+
case "GRACEFUL_EXIT_TIMEOUT":
|
|
150
|
+
case "HANDLE_ERROR_ERROR":
|
|
151
|
+
case "TASK_INPUT_ERROR":
|
|
152
|
+
case "TASK_OUTPUT_ERROR":
|
|
153
|
+
case "POD_EVICTED":
|
|
154
|
+
case "POD_UNKNOWN_ERROR":
|
|
155
|
+
case "TASK_EXECUTION_ABORTED":
|
|
156
|
+
case "TASK_EXECUTION_FAILED":
|
|
157
|
+
case "TASK_RUN_CRASHED":
|
|
158
|
+
case "TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE":
|
|
159
|
+
case "TASK_PROCESS_SIGTERM":
|
|
160
|
+
return true;
|
|
161
|
+
default:
|
|
162
|
+
assertExhaustive(error.code);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
case "STRING_ERROR": {
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
case "BUILT_IN_ERROR": {
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
171
|
+
case "CUSTOM_ERROR": {
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
default: {
|
|
175
|
+
assertExhaustive(error);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
121
179
|
export function correctErrorStackTrace(stackTrace, projectDir, options) {
|
|
122
180
|
const [errorLine, ...traceLines] = stackTrace.split("\n");
|
|
123
181
|
return [
|
|
@@ -265,16 +323,86 @@ const prettyInternalErrors = {
|
|
|
265
323
|
href: links.docs.machines.home,
|
|
266
324
|
},
|
|
267
325
|
},
|
|
326
|
+
TASK_PROCESS_SIGSEGV: {
|
|
327
|
+
message: "Your task crashed with a segmentation fault (SIGSEGV). Most likely there's a bug in a package or binary you're using. If this keeps happening and you're unsure why, please get in touch.",
|
|
328
|
+
link: {
|
|
329
|
+
name: "Contact us",
|
|
330
|
+
href: links.site.contact,
|
|
331
|
+
magic: "CONTACT_FORM",
|
|
332
|
+
},
|
|
333
|
+
},
|
|
334
|
+
TASK_PROCESS_SIGTERM: {
|
|
335
|
+
message: "Your task exited after receiving SIGTERM but we don't know why. If this keeps happening, please get in touch so we can investigate.",
|
|
336
|
+
link: {
|
|
337
|
+
name: "Contact us",
|
|
338
|
+
href: links.site.contact,
|
|
339
|
+
magic: "CONTACT_FORM",
|
|
340
|
+
},
|
|
341
|
+
},
|
|
342
|
+
};
|
|
343
|
+
const getPrettyTaskRunError = (code) => {
|
|
344
|
+
return {
|
|
345
|
+
type: "INTERNAL_ERROR",
|
|
346
|
+
code,
|
|
347
|
+
...prettyInternalErrors[code],
|
|
348
|
+
};
|
|
349
|
+
};
|
|
350
|
+
const getPrettyExceptionEvent = (code) => {
|
|
351
|
+
return {
|
|
352
|
+
type: code,
|
|
353
|
+
...prettyInternalErrors[code],
|
|
354
|
+
};
|
|
355
|
+
};
|
|
356
|
+
const findSignalInMessage = (message, truncateLength = 100) => {
|
|
357
|
+
if (!message) {
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
const trunc = truncateLength ? message.slice(0, truncateLength) : message;
|
|
361
|
+
if (trunc.includes("SIGTERM")) {
|
|
362
|
+
return "SIGTERM";
|
|
363
|
+
}
|
|
364
|
+
else if (trunc.includes("SIGSEGV")) {
|
|
365
|
+
return "SIGSEGV";
|
|
366
|
+
}
|
|
367
|
+
else if (trunc.includes("SIGKILL")) {
|
|
368
|
+
return "SIGKILL";
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
268
373
|
};
|
|
269
374
|
export function taskRunErrorEnhancer(error) {
|
|
270
375
|
switch (error.type) {
|
|
271
376
|
case "BUILT_IN_ERROR": {
|
|
272
377
|
if (error.name === "UnexpectedExitError") {
|
|
273
378
|
if (error.message.startsWith("Unexpected exit with code -1")) {
|
|
379
|
+
const signal = findSignalInMessage(error.stackTrace);
|
|
380
|
+
switch (signal) {
|
|
381
|
+
case "SIGTERM":
|
|
382
|
+
return {
|
|
383
|
+
...getPrettyTaskRunError("TASK_PROCESS_SIGTERM"),
|
|
384
|
+
};
|
|
385
|
+
case "SIGSEGV":
|
|
386
|
+
return {
|
|
387
|
+
...getPrettyTaskRunError("TASK_PROCESS_SIGSEGV"),
|
|
388
|
+
};
|
|
389
|
+
case "SIGKILL":
|
|
390
|
+
return {
|
|
391
|
+
...getPrettyTaskRunError("TASK_PROCESS_MAYBE_OOM_KILLED"),
|
|
392
|
+
};
|
|
393
|
+
default:
|
|
394
|
+
return {
|
|
395
|
+
...getPrettyTaskRunError("TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE"),
|
|
396
|
+
message: error.message,
|
|
397
|
+
stackTrace: error.stackTrace,
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
if (error.name === "Error") {
|
|
403
|
+
if (error.message === "ffmpeg was killed with signal SIGKILL") {
|
|
274
404
|
return {
|
|
275
|
-
|
|
276
|
-
code: TaskRunErrorCodes.TASK_PROCESS_MAYBE_OOM_KILLED,
|
|
277
|
-
...prettyInternalErrors.TASK_PROCESS_MAYBE_OOM_KILLED,
|
|
405
|
+
...getPrettyTaskRunError("TASK_PROCESS_OOM_KILLED"),
|
|
278
406
|
};
|
|
279
407
|
}
|
|
280
408
|
}
|
|
@@ -288,20 +416,33 @@ export function taskRunErrorEnhancer(error) {
|
|
|
288
416
|
}
|
|
289
417
|
case "INTERNAL_ERROR": {
|
|
290
418
|
if (error.code === TaskRunErrorCodes.TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE) {
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
419
|
+
const signal = findSignalInMessage(error.message);
|
|
420
|
+
switch (signal) {
|
|
421
|
+
case "SIGTERM":
|
|
422
|
+
return {
|
|
423
|
+
...getPrettyTaskRunError("TASK_PROCESS_SIGTERM"),
|
|
424
|
+
};
|
|
425
|
+
case "SIGSEGV":
|
|
426
|
+
return {
|
|
427
|
+
...getPrettyTaskRunError("TASK_PROCESS_SIGSEGV"),
|
|
428
|
+
};
|
|
429
|
+
case "SIGKILL":
|
|
430
|
+
return {
|
|
431
|
+
...getPrettyTaskRunError("TASK_PROCESS_MAYBE_OOM_KILLED"),
|
|
432
|
+
};
|
|
433
|
+
default: {
|
|
434
|
+
return {
|
|
435
|
+
...getPrettyTaskRunError("TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE"),
|
|
436
|
+
message: error.message,
|
|
437
|
+
stackTrace: error.stackTrace,
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
}
|
|
303
441
|
}
|
|
304
|
-
|
|
442
|
+
return {
|
|
443
|
+
...error,
|
|
444
|
+
...getPrettyTaskRunError(error.code),
|
|
445
|
+
};
|
|
305
446
|
}
|
|
306
447
|
}
|
|
307
448
|
return error;
|
|
@@ -317,42 +458,88 @@ export function exceptionEventEnhancer(exception) {
|
|
|
317
458
|
}
|
|
318
459
|
break;
|
|
319
460
|
}
|
|
461
|
+
case "Internal error": {
|
|
462
|
+
if (exception.message?.startsWith(TaskRunErrorCodes.TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE)) {
|
|
463
|
+
const signal = findSignalInMessage(exception.message);
|
|
464
|
+
switch (signal) {
|
|
465
|
+
case "SIGTERM":
|
|
466
|
+
return {
|
|
467
|
+
...exception,
|
|
468
|
+
...getPrettyExceptionEvent("TASK_PROCESS_SIGTERM"),
|
|
469
|
+
};
|
|
470
|
+
case "SIGSEGV":
|
|
471
|
+
return {
|
|
472
|
+
...exception,
|
|
473
|
+
...getPrettyExceptionEvent("TASK_PROCESS_SIGSEGV"),
|
|
474
|
+
};
|
|
475
|
+
case "SIGKILL":
|
|
476
|
+
return {
|
|
477
|
+
...exception,
|
|
478
|
+
...getPrettyExceptionEvent("TASK_PROCESS_MAYBE_OOM_KILLED"),
|
|
479
|
+
};
|
|
480
|
+
default:
|
|
481
|
+
return exception;
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
break;
|
|
485
|
+
}
|
|
486
|
+
case "Error": {
|
|
487
|
+
if (exception.message === "ffmpeg was killed with signal SIGKILL") {
|
|
488
|
+
return {
|
|
489
|
+
...exception,
|
|
490
|
+
...prettyInternalErrors.TASK_PROCESS_OOM_KILLED,
|
|
491
|
+
};
|
|
492
|
+
}
|
|
493
|
+
break;
|
|
494
|
+
}
|
|
320
495
|
case TaskRunErrorCodes.TASK_PROCESS_MAYBE_OOM_KILLED:
|
|
321
|
-
case TaskRunErrorCodes.TASK_PROCESS_OOM_KILLED:
|
|
496
|
+
case TaskRunErrorCodes.TASK_PROCESS_OOM_KILLED:
|
|
497
|
+
case TaskRunErrorCodes.TASK_PROCESS_SIGTERM: {
|
|
322
498
|
return {
|
|
323
499
|
...exception,
|
|
324
|
-
...
|
|
500
|
+
...getPrettyExceptionEvent(exception.type),
|
|
325
501
|
};
|
|
326
502
|
}
|
|
327
503
|
}
|
|
328
504
|
return exception;
|
|
329
505
|
}
|
|
330
506
|
export function internalErrorFromUnexpectedExit(error, dockerMode = true) {
|
|
507
|
+
const internalError = {
|
|
508
|
+
type: "INTERNAL_ERROR",
|
|
509
|
+
code: TaskRunErrorCodes.TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE,
|
|
510
|
+
message: `Process exited with code ${error.code} after signal ${error.signal}.`,
|
|
511
|
+
stackTrace: error.stderr,
|
|
512
|
+
};
|
|
331
513
|
if (error.code === 137) {
|
|
332
514
|
if (dockerMode) {
|
|
333
515
|
return {
|
|
334
|
-
|
|
516
|
+
...internalError,
|
|
335
517
|
code: TaskRunErrorCodes.TASK_PROCESS_OOM_KILLED,
|
|
336
518
|
};
|
|
337
519
|
}
|
|
338
520
|
else {
|
|
339
521
|
// Note: containerState reason and message could be checked to clarify the error, maybe the task monitor should be allowed to override these
|
|
340
522
|
return {
|
|
341
|
-
|
|
523
|
+
...internalError,
|
|
342
524
|
code: TaskRunErrorCodes.TASK_PROCESS_MAYBE_OOM_KILLED,
|
|
343
525
|
};
|
|
344
526
|
}
|
|
345
527
|
}
|
|
346
528
|
if (error.stderr?.includes("OOMErrorHandler")) {
|
|
347
529
|
return {
|
|
348
|
-
|
|
530
|
+
...internalError,
|
|
349
531
|
code: TaskRunErrorCodes.TASK_PROCESS_OOM_KILLED,
|
|
350
532
|
};
|
|
351
533
|
}
|
|
534
|
+
if (error.signal === "SIGTERM") {
|
|
535
|
+
return {
|
|
536
|
+
...internalError,
|
|
537
|
+
code: TaskRunErrorCodes.TASK_PROCESS_SIGTERM,
|
|
538
|
+
};
|
|
539
|
+
}
|
|
352
540
|
return {
|
|
353
|
-
|
|
541
|
+
...internalError,
|
|
354
542
|
code: TaskRunErrorCodes.TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE,
|
|
355
|
-
message: `Process exited with code ${error.code} after signal ${error.signal}.`,
|
|
356
543
|
};
|
|
357
544
|
}
|
|
358
545
|
export function serializeIndexingError(error, stderr) {
|