Skip to content

Commit e0bf4cd

Browse files
committed
A couple tweaks to make CodeRabbit happy and fixing the tests in CI
1 parent c2595f4 commit e0bf4cd

File tree

5 files changed

+36
-21
lines changed

5 files changed

+36
-21
lines changed

apps/webapp/app/runEngine/concerns/idempotencyKeys.server.ts

+11-12
Original file line numberDiff line numberDiff line change
@@ -48,30 +48,29 @@ export class IdempotencyKeyConcern {
4848
});
4949

5050
// Update the existing run to remove the idempotency key
51-
await this.prisma.taskRun.update({
52-
where: { id: existingRun.id },
53-
data: { idempotencyKey: null },
51+
await this.prisma.taskRun.updateMany({
52+
where: { id: existingRun.id, idempotencyKey },
53+
data: { idempotencyKey: null, idempotencyKeyExpiresAt: null },
5454
});
5555
} else {
56+
const associatedWaitpoint = existingRun.associatedWaitpoint;
57+
const parentRunId = request.body.options?.parentRunId;
58+
const resumeParentOnCompletion = request.body.options?.resumeParentOnCompletion;
5659
//We're using `andWait` so we need to block the parent run with a waitpoint
57-
if (
58-
existingRun.associatedWaitpoint &&
59-
request.body.options?.resumeParentOnCompletion &&
60-
request.body.options?.parentRunId
61-
) {
60+
if (associatedWaitpoint && resumeParentOnCompletion && parentRunId) {
6261
await this.traceEventConcern.traceIdempotentRun(
6362
request,
6463
{
6564
existingRun,
6665
idempotencyKey,
67-
incomplete: existingRun.associatedWaitpoint.status === "PENDING",
68-
isError: existingRun.associatedWaitpoint.outputIsError,
66+
incomplete: associatedWaitpoint.status === "PENDING",
67+
isError: associatedWaitpoint.outputIsError,
6968
},
7069
async (event) => {
7170
//block run with waitpoint
7271
await this.engine.blockRunWithWaitpoint({
73-
runId: RunId.fromFriendlyId(request.body.options!.parentRunId!),
74-
waitpoints: existingRun.associatedWaitpoint!.id,
72+
runId: RunId.fromFriendlyId(parentRunId),
73+
waitpoints: associatedWaitpoint.id,
7574
spanIdToComplete: event.spanId,
7675
batch: request.options?.batchId
7776
? {

apps/webapp/app/runEngine/concerns/runChainStates.server.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,10 @@ export class DefaultRunChainStateManager implements RunChainStateManager {
143143

144144
const environmentConcurrency = (runChainState.concurrency?.environment ?? 0) + 1;
145145

146-
if (environmentConcurrency > request.environment.maximumConcurrencyLimit) {
146+
if (
147+
request.environment.maximumConcurrencyLimit > 0 &&
148+
environmentConcurrency > request.environment.maximumConcurrencyLimit
149+
) {
147150
const environmentDetails = `The environment has a concurrency limit of ${request.environment.maximumConcurrencyLimit}, and the chain would require ${environmentConcurrency}`;
148151
throw new EngineServiceValidationError(this.createDeadlockErrorMessage(environmentDetails));
149152
}

apps/webapp/app/runEngine/services/triggerTask.server.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ import {
1212
TriggerTaskRequestBody,
1313
} from "@trigger.dev/core/v3";
1414
import { RunId, stringifyDuration } from "@trigger.dev/core/v3/isomorphic";
15-
import { PrismaClientOrTransaction } from "@trigger.dev/database";
15+
import type { PrismaClientOrTransaction } from "@trigger.dev/database";
1616
import { createTags } from "~/models/taskRunTag.server";
17-
import { AuthenticatedEnvironment } from "~/services/apiAuth.server";
17+
import type { AuthenticatedEnvironment } from "~/services/apiAuth.server";
1818
import { logger } from "~/services/logger.server";
1919
import { parseDelay } from "~/utils/delays";
2020
import { handleMetadataPacket } from "~/utils/packets";
2121
import { startSpan } from "~/v3/tracing.server";
22-
import {
22+
import type {
2323
TriggerTaskServiceOptions,
2424
TriggerTaskServiceResult,
2525
} from "../../v3/services/triggerTask.server";

apps/webapp/app/v3/services/triggerTask.server.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ export class TriggerTaskService extends WithRunEngine {
8888
body: TriggerTaskRequestBody,
8989
options: TriggerTaskServiceOptions = {}
9090
): Promise<TriggerTaskServiceResult | undefined> {
91+
const traceEventConcern = new DefaultTraceEventsConcern(eventRepository);
92+
9193
const service = new RunEngineTriggerTaskService({
9294
prisma: this._prisma,
9395
engine: this._engine,
@@ -97,10 +99,10 @@ export class TriggerTaskService extends WithRunEngine {
9799
idempotencyKeyConcern: new IdempotencyKeyConcern(
98100
this._prisma,
99101
this._engine,
100-
new DefaultTraceEventsConcern(eventRepository)
102+
traceEventConcern
101103
),
102104
runNumberIncrementer: new DefaultRunNumberIncrementer(),
103-
traceEventConcern: new DefaultTraceEventsConcern(eventRepository),
105+
traceEventConcern,
104106
runChainStateManager: new DefaultRunChainStateManager(
105107
this._prisma,
106108
env.RUN_ENGINE_RELEASE_CONCURRENCY_ENABLED === "1"

apps/webapp/test/engine/triggerTask.test.ts

+14-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,23 @@
1+
import { describe, expect, vi } from "vitest";
2+
3+
// Mock the db prisma client
4+
vi.mock("~/db.server", () => ({
5+
prisma: {},
6+
}));
7+
8+
vi.mock("~/services/platform.v3.server", () => ({
9+
getEntitlement: vi.fn(),
10+
}));
11+
112
import { RunEngine } from "@internal/run-engine";
213
import { setupAuthenticatedEnvironment, setupBackgroundWorker } from "@internal/run-engine/tests";
314
import { containerTest } from "@internal/testcontainers";
415
import { trace } from "@opentelemetry/api";
516
import { IOPacket } from "@trigger.dev/core/v3";
6-
import { describe, expect, vi } from "vitest";
17+
import { TaskRun } from "@trigger.dev/database";
718
import { IdempotencyKeyConcern } from "~/runEngine/concerns/idempotencyKeys.server";
819
import { DefaultQueueManager } from "~/runEngine/concerns/queues.server";
20+
import { DefaultRunChainStateManager } from "~/runEngine/concerns/runChainStates.server";
921
import {
1022
EntitlementValidationParams,
1123
MaxAttemptsValidationParams,
@@ -20,8 +32,7 @@ import {
2032
ValidationResult,
2133
} from "~/runEngine/types";
2234
import { RunEngineTriggerTaskService } from "../../app/runEngine/services/triggerTask.server";
23-
import { TaskRun, TaskRunStatus } from "@trigger.dev/database";
24-
import { DefaultRunChainStateManager } from "~/runEngine/concerns/runChainStates.server";
35+
import { getEntitlement } from "~/services/platform.v3.server";
2536

2637
vi.setConfig({ testTimeout: 30_000 }); // 30 seconds timeout
2738

0 commit comments

Comments
 (0)