Skip to content

Commit e3b9ab1

Browse files
committed
Merge branch 'main' into feature/tri-6738-show-aggregated-logs-in-main-page
2 parents 33a9e1b + d820896 commit e3b9ab1

35 files changed

Lines changed: 5794 additions & 77 deletions

.changeset/fluffy-crews-rhyme.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/ninety-cows-lay.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/quick-plums-tan.md

Lines changed: 0 additions & 6 deletions
This file was deleted.

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

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,35 @@ import { env } from "~/env.server";
1616
import { tryCatch } from "@trigger.dev/core/v3";
1717
import { ServiceValidationError } from "~/v3/services/common.server";
1818

19+
/**
20+
* Extract the queue name from a queue option that may be:
21+
* - An object with a string `name` property: { name: "queue-name" }
22+
* - A double-wrapped object (bug case): { name: { name: "queue-name", ... } }
23+
*
24+
* This handles the case where the SDK accidentally double-wraps the queue
25+
* option when it's already an object with a name property.
26+
*/
27+
function extractQueueName(queue: { name?: unknown } | undefined): string | undefined {
28+
if (!queue?.name) {
29+
return undefined;
30+
}
31+
32+
// Normal case: queue.name is a string
33+
if (typeof queue.name === "string") {
34+
return queue.name;
35+
}
36+
37+
// Double-wrapped case: queue.name is an object with its own name property
38+
if (typeof queue.name === "object" && queue.name !== null && "name" in queue.name) {
39+
const innerName = (queue.name as { name: unknown }).name;
40+
if (typeof innerName === "string") {
41+
return innerName;
42+
}
43+
}
44+
45+
return undefined;
46+
}
47+
1948
export class DefaultQueueManager implements QueueManager {
2049
constructor(
2150
private readonly prisma: PrismaClientOrTransaction,
@@ -32,8 +61,8 @@ export class DefaultQueueManager implements QueueManager {
3261
// Determine queue name based on lockToVersion and provided options
3362
if (lockedBackgroundWorker) {
3463
// Task is locked to a specific worker version
35-
if (request.body.options?.queue?.name) {
36-
const specifiedQueueName = request.body.options.queue.name;
64+
const specifiedQueueName = extractQueueName(request.body.options?.queue);
65+
if (specifiedQueueName) {
3766
// A specific queue name is provided
3867
const specifiedQueue = await this.prisma.taskQueue.findFirst({
3968
// Validate it exists for the locked worker
@@ -126,8 +155,10 @@ export class DefaultQueueManager implements QueueManager {
126155
const { taskId, environment, body } = request;
127156
const { queue } = body.options ?? {};
128157

129-
if (queue?.name) {
130-
return queue.name;
158+
// Use extractQueueName to handle double-wrapped queue objects
159+
const queueName = extractQueueName(queue);
160+
if (queueName) {
161+
return queueName;
131162
}
132163

133164
const defaultQueueName = `task/${taskId}`;

0 commit comments

Comments
 (0)