From 38f5a90399d38d6270f1007d00482d9ad017d040 Mon Sep 17 00:00:00 2001 From: Matt Aitken Date: Tue, 16 Jan 2024 14:01:05 +0000 Subject: [PATCH] Auto-yielding is skipped for tasks that are no-ops and subtasks --- .changeset/polite-olives-drop.md | 5 +++++ packages/trigger-sdk/src/io.ts | 18 +++++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) create mode 100644 .changeset/polite-olives-drop.md diff --git a/.changeset/polite-olives-drop.md b/.changeset/polite-olives-drop.md new file mode 100644 index 0000000000..746a46649a --- /dev/null +++ b/.changeset/polite-olives-drop.md @@ -0,0 +1,5 @@ +--- +"@trigger.dev/sdk": patch +--- + +Don't auto-yield with no-op tasks (e.g. logs) that are subtasks diff --git a/packages/trigger-sdk/src/io.ts b/packages/trigger-sdk/src/io.ts index 55ba2b5e05..4bec2731d1 100644 --- a/packages/trigger-sdk/src/io.ts +++ b/packages/trigger-sdk/src/io.ts @@ -214,12 +214,12 @@ export class IO { return new IOLogger(async (level, message, data) => { let logLevel: LogLevel = "info"; - if(data instanceof Error){ + if (data instanceof Error) { data = { - name : data.name, - message : data.message, - stack : data.stack - } + name: data.name, + message: data.message, + stack: data.stack, + }; } if (Logger.satisfiesLogLevel(logLevel, this._jobLogLevel)) { @@ -1097,8 +1097,6 @@ export class IO { options?: RunTaskOptions & { parseOutput?: (output: unknown) => T }, onError?: RunTaskErrorCallback ): Promise { - this.#detectAutoYield("start_task", 500); - const parentId = this._taskStorage.getStore()?.taskId; if (parentId) { @@ -1109,6 +1107,12 @@ export class IO { }); } + //don't auto-yield if it's a no-op and a subtask (e.g. a log inside a task) + const isSubtaskNoop = options?.noop === true && parentId !== undefined; + if (!isSubtaskNoop) { + this.#detectAutoYield("start_task", 500); + } + const idempotencyKey = await generateIdempotencyKey( [this._id, parentId ?? "", cacheKey].flat() );