Skip to content

Commit 6f26acb

Browse files
authored
fix(run-engine): use reader for pending version queries (#2924)
Move expensive findMany queries for PENDING_VERSION and WAITING_FOR_DEPLOY runs to read replicas to avoid blocking migrations on the primary database. Changes: - Add readOnlyPrisma to SystemResources type - Pass readOnlyPrisma to systems in RunEngine constructor - Update pendingVersionSystem to use readOnlyPrisma for findMany - Update executeTasksWaitingForDeploy to use _replica for findMany
1 parent bd449f7 commit 6f26acb

File tree

4 files changed

+5
-3
lines changed

4 files changed

+5
-3
lines changed

apps/webapp/app/v3/services/executeTasksWaitingForDeploy.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export class ExecuteTasksWaitingForDeployService extends BaseService {
3333

3434
const maxCount = env.LEGACY_RUN_ENGINE_WAITING_FOR_DEPLOY_BATCH_SIZE;
3535

36-
const runsWaitingForDeploy = await this._prisma.taskRun.findMany({
36+
const runsWaitingForDeploy = await this._replica.taskRun.findMany({
3737
where: {
3838
runtimeEnvironmentId: backgroundWorker.runtimeEnvironmentId,
3939
projectId: backgroundWorker.projectId,

internal-packages/run-engine/src/engine/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,7 @@ export class RunEngine {
268268

269269
const resources: SystemResources = {
270270
prisma: this.prisma,
271+
readOnlyPrisma: this.readOnlyPrisma,
271272
worker: this.worker,
272273
eventBus: this.eventBus,
273274
logger: this.logger,

internal-packages/run-engine/src/engine/systems/pendingVersionSystem.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export class PendingVersionSystem {
5050
queues: backgroundWorker.queues.map((queue) => queue.name),
5151
});
5252

53-
const pendingRuns = await this.$.prisma.taskRun.findMany({
53+
const pendingRuns = await this.$.readOnlyPrisma.taskRun.findMany({
5454
where: {
5555
runtimeEnvironmentId: backgroundWorker.runtimeEnvironmentId,
5656
projectId: backgroundWorker.projectId,

internal-packages/run-engine/src/engine/systems/systems.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Meter, Tracer } from "@internal/tracing";
22
import { Logger } from "@trigger.dev/core/logger";
3-
import { PrismaClient } from "@trigger.dev/database";
3+
import { PrismaClient, PrismaReplicaClient } from "@trigger.dev/database";
44
import { RunQueue } from "../../run-queue/index.js";
55
import { EventBus } from "../eventBus.js";
66
import { RunLocker } from "../locking.js";
@@ -9,6 +9,7 @@ import { RaceSimulationSystem } from "./raceSimulationSystem.js";
99

1010
export type SystemResources = {
1111
prisma: PrismaClient;
12+
readOnlyPrisma: PrismaReplicaClient;
1213
worker: EngineWorker;
1314
eventBus: EventBus;
1415
logger: Logger;

0 commit comments

Comments
 (0)