From 6a69ed614dc08867b77ef74fe32d24ec9874ad8d Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Sun, 13 Apr 2025 18:49:04 +0100 Subject: [PATCH 1/3] run engine v1 will only lock to v1 deployments --- .../app/v3/models/workerDeployment.server.ts | 45 ++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/apps/webapp/app/v3/models/workerDeployment.server.ts b/apps/webapp/app/v3/models/workerDeployment.server.ts index 74e3fd7b345..b4669a9cc71 100644 --- a/apps/webapp/app/v3/models/workerDeployment.server.ts +++ b/apps/webapp/app/v3/models/workerDeployment.server.ts @@ -71,6 +71,7 @@ export async function findCurrentWorkerDeployment( id: true, imageReference: true, version: true, + type: true, worker: { select: { id: true, @@ -88,7 +89,49 @@ export async function findCurrentWorkerDeployment( }, }); - return promotion?.deployment; + if (!promotion) { + return undefined; + } + + if (promotion.deployment.type === "V1") { + // This is a run engine v1 deployment, so return it + return promotion.deployment; + } + + // We need to get the latest run engine v1 deployment + const latestV1Deployment = await prisma.workerDeployment.findFirst({ + where: { + environmentId, + type: "V1", + }, + orderBy: { + id: "desc", + }, + select: { + id: true, + imageReference: true, + version: true, + type: true, + worker: { + select: { + id: true, + friendlyId: true, + version: true, + sdkVersion: true, + cliVersion: true, + supportsLazyAttempts: true, + tasks: true, + engine: true, + }, + }, + }, + }); + + if (!latestV1Deployment) { + return undefined; + } + + return latestV1Deployment; } export async function getCurrentWorkerDeploymentEngineVersion( From 704c638c402ada1181da38f8896b3b5e160b01f0 Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Sun, 13 Apr 2025 18:49:22 +0100 Subject: [PATCH 2/3] run engine v2 will only lock to managed v2 deployments --- .../run-engine/src/engine/db/worker.ts | 41 +++++++++++++++++-- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/internal-packages/run-engine/src/engine/db/worker.ts b/internal-packages/run-engine/src/engine/db/worker.ts index 34abf2cd32e..701987581dc 100644 --- a/internal-packages/run-engine/src/engine/db/worker.ts +++ b/internal-packages/run-engine/src/engine/db/worker.ts @@ -289,10 +289,43 @@ export async function getWorkerFromCurrentlyPromotedDeployment( return null; } + if (promotion.deployment.type === "MANAGED") { + // This is a run engine v2 deployment, so return it + return { + worker: promotion.deployment.worker, + tasks: promotion.deployment.worker.tasks, + queues: promotion.deployment.worker.queues, + deployment: promotion.deployment, + }; + } + + // We need to get the latest run engine v2 deployment + const latestV2Deployment = await prisma.workerDeployment.findFirst({ + where: { + environmentId, + type: "MANAGED", + }, + orderBy: { + id: "desc", + }, + include: { + worker: { + include: { + tasks: true, + queues: true, + }, + }, + }, + }); + + if (!latestV2Deployment?.worker) { + return null; + } + return { - worker: promotion.deployment.worker, - tasks: promotion.deployment.worker.tasks, - queues: promotion.deployment.worker.queues, - deployment: promotion.deployment, + worker: latestV2Deployment.worker, + tasks: latestV2Deployment.worker.tasks, + queues: latestV2Deployment.worker.queues, + deployment: latestV2Deployment, }; } From e1b0aa23f10416b1ee513f61f68510b58a2c75bc Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Sun, 13 Apr 2025 21:35:36 +0100 Subject: [PATCH 3/3] test: create background worker and deployment with correct engine version --- internal-packages/run-engine/src/engine/tests/setup.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/internal-packages/run-engine/src/engine/tests/setup.ts b/internal-packages/run-engine/src/engine/tests/setup.ts index be8b331dbec..a666107f7c2 100644 --- a/internal-packages/run-engine/src/engine/tests/setup.ts +++ b/internal-packages/run-engine/src/engine/tests/setup.ts @@ -97,6 +97,7 @@ export async function setupBackgroundWorker( runtimeEnvironmentId: environment.id, version: nextVersion, metadata: {}, + engine: "V2", }, }); @@ -234,6 +235,7 @@ export async function setupBackgroundWorker( projectId: environment.project.id, environmentId: environment.id, workerId: worker.id, + type: "MANAGED", }, });