From b4061f2ae71f21889adcf061928e2e77c436f0ed Mon Sep 17 00:00:00 2001
From: nicktrn <55853254+nicktrn@users.noreply.github.com>
Date: Sat, 13 Apr 2024 11:29:26 +0100
Subject: [PATCH 01/11] fix dev dependecy resumes
---
.../v3/services/batchTriggerTask.server.ts | 22 +++++++++++++++++++
.../app/v3/services/triggerTask.server.ts | 22 +++++++++++++++++++
2 files changed, 44 insertions(+)
diff --git a/apps/webapp/app/v3/services/batchTriggerTask.server.ts b/apps/webapp/app/v3/services/batchTriggerTask.server.ts
index ac286e8cbf7..5ff8e4a1906 100644
--- a/apps/webapp/app/v3/services/batchTriggerTask.server.ts
+++ b/apps/webapp/app/v3/services/batchTriggerTask.server.ts
@@ -54,6 +54,28 @@ export class BatchTriggerTaskService extends BaseService {
})
: undefined;
+ if (dependentAttempt && environment.type === "DEVELOPMENT") {
+ // The dev worker handles dependency resumes and attempt completions in parallel, so we need to clear any existing ones here to prevent race conditions
+ const existingBatch = await this._prisma.batchTaskRun.findUnique({
+ where: {
+ dependentTaskAttemptId: dependentAttempt.id,
+ },
+ });
+
+ if (existingBatch) {
+ await this._prisma.batchTaskRun.update({
+ where: {
+ id: existingBatch.id,
+ },
+ data: {
+ dependentTaskAttempt: {
+ disconnect: true,
+ },
+ },
+ });
+ }
+ }
+
const batch = await this._prisma.batchTaskRun.create({
data: {
friendlyId: generateFriendlyId("batch"),
diff --git a/apps/webapp/app/v3/services/triggerTask.server.ts b/apps/webapp/app/v3/services/triggerTask.server.ts
index fc976314bdf..d1b62a1bda1 100644
--- a/apps/webapp/app/v3/services/triggerTask.server.ts
+++ b/apps/webapp/app/v3/services/triggerTask.server.ts
@@ -147,6 +147,28 @@ export class TriggerTaskService extends BaseService {
});
if (dependentAttempt) {
+ if (environment.type === "DEVELOPMENT") {
+ // The dev worker handles dependency resumes and attempt completions in parallel, so we need to clear any existing ones here to prevent race conditions
+ const existingDependency = await tx.taskRunDependency.findUnique({
+ where: {
+ dependentAttemptId: dependentAttempt.id,
+ },
+ });
+
+ if (existingDependency) {
+ await tx.taskRunDependency.update({
+ where: {
+ id: existingDependency.id,
+ },
+ data: {
+ dependentAttempt: {
+ disconnect: true,
+ },
+ },
+ });
+ }
+ }
+
await tx.taskRunDependency.create({
data: {
taskRunId: taskRun.id,
From 6cc8d667545cb43108c3432a2295d2b0470290a1 Mon Sep 17 00:00:00 2001
From: nicktrn <55853254+nicktrn@users.noreply.github.com>
Date: Sat, 13 Apr 2024 11:30:55 +0100
Subject: [PATCH 02/11] add catalog entry with multiple trigger waits
---
references/v3-catalog/src/trigger/subtasks.ts | 25 +++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/references/v3-catalog/src/trigger/subtasks.ts b/references/v3-catalog/src/trigger/subtasks.ts
index a1e6a742d4e..73d55cc330f 100644
--- a/references/v3-catalog/src/trigger/subtasks.ts
+++ b/references/v3-catalog/src/trigger/subtasks.ts
@@ -114,3 +114,28 @@ export const subtasksWithRetries = task({
};
},
});
+
+export const multipleTriggerWaits = task({
+ id: "multiple-trigger-waits",
+ run: async ({ message = "test" }: { message?: string }) => {
+ await simpleChildTask.triggerAndWait({ payload: { message: `${message} - 1.a` } });
+ await simpleChildTask.triggerAndWait({ payload: { message: `${message} - 2.a` } });
+
+ await simpleChildTask.batchTriggerAndWait({
+ items: [
+ { payload: { message: `${message} - 3.a` } },
+ { payload: { message: `${message} - 3.b` } },
+ ],
+ });
+ await simpleChildTask.batchTriggerAndWait({
+ items: [
+ { payload: { message: `${message} - 4.a` } },
+ { payload: { message: `${message} - 4.b` } },
+ ],
+ });
+
+ return {
+ hello: "world",
+ };
+ },
+});
From a2a9d1f6056238bc7cc5f34feffdc2d325843241 Mon Sep 17 00:00:00 2001
From: nicktrn <55853254+nicktrn@users.noreply.github.com>
Date: Sat, 13 Apr 2024 11:31:24 +0100
Subject: [PATCH 03/11] update docker provider lifecycle command
---
apps/docker-provider/src/index.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/apps/docker-provider/src/index.ts b/apps/docker-provider/src/index.ts
index 7728449dac3..f1f945853c4 100644
--- a/apps/docker-provider/src/index.ts
+++ b/apps/docker-provider/src/index.ts
@@ -257,6 +257,7 @@ class DockerTaskOperations implements TaskOperations {
return await execa("docker", [
"exec",
containerName,
+ "busybox",
"wget",
"-q",
"-O-",
From c92c8da7ed705bae4d9f19947e1976ac78fe67a4 Mon Sep 17 00:00:00 2001
From: nicktrn <55853254+nicktrn@users.noreply.github.com>
Date: Sat, 13 Apr 2024 11:31:48 +0100
Subject: [PATCH 04/11] switch to x for clearing run filters
---
apps/webapp/app/components/runs/v3/RunFilters.tsx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/apps/webapp/app/components/runs/v3/RunFilters.tsx b/apps/webapp/app/components/runs/v3/RunFilters.tsx
index 821e291fd50..8ef80801e72 100644
--- a/apps/webapp/app/components/runs/v3/RunFilters.tsx
+++ b/apps/webapp/app/components/runs/v3/RunFilters.tsx
@@ -1,4 +1,4 @@
-import { TrashIcon } from "@heroicons/react/20/solid";
+import { XMarkIcon } from "@heroicons/react/20/solid";
import { useNavigate } from "@remix-run/react";
import type { TaskRunStatus as TaskRunStatusType } from "@trigger.dev/database";
import { RuntimeEnvironment, TaskRunAttemptStatus, TaskRunStatus } from "@trigger.dev/database";
@@ -247,7 +247,7 @@ export function RunsFilters({ possibleEnvironments, possibleTasks }: RunFiltersP
-