diff --git a/apps/webapp/app/v3/models/workerDeployment.server.ts b/apps/webapp/app/v3/models/workerDeployment.server.ts index 74e3fd7b34..b4669a9cc7 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( diff --git a/internal-packages/run-engine/src/engine/db/worker.ts b/internal-packages/run-engine/src/engine/db/worker.ts index 34abf2cd32..701987581d 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, }; } diff --git a/internal-packages/run-engine/src/engine/tests/setup.ts b/internal-packages/run-engine/src/engine/tests/setup.ts index be8b331dbe..a666107f7c 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", }, });