Skip to content

Commit 8d514b9

Browse files
committed
Use orderableName on the TaskQueue and add the releaseConcurrencyOnWaitpoint to the SDK and the dashboard
1 parent f58dee1 commit 8d514b9

File tree

6 files changed

+48
-2
lines changed

6 files changed

+48
-2
lines changed

apps/webapp/app/components/primitives/Table.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,12 @@ export const TableHeaderCell = forwardRef<HTMLTableCellElement, TableHeaderCellP
161161
{hiddenLabel ? (
162162
<span className="sr-only">{children}</span>
163163
) : tooltip ? (
164-
<div className="flex items-center gap-1">
164+
<div
165+
className={cn("flex items-center gap-1", {
166+
"justify-center": alignment === "center",
167+
"justify-end": alignment === "right",
168+
})}
169+
>
165170
{children}
166171
<InfoIconTooltip content={tooltip} contentClassName="normal-case tracking-normal" />
167172
</div>

apps/webapp/app/presenters/v3/QueueListPresenter.server.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,14 @@ export class QueueListPresenter extends BasePresenter {
6161
select: {
6262
friendlyId: true,
6363
name: true,
64+
orderableName: true,
6465
concurrencyLimit: true,
6566
type: true,
6667
paused: true,
68+
releaseConcurrencyOnWaitpoint: true,
6769
},
6870
orderBy: {
69-
name: "asc",
71+
orderableName: "asc",
7072
},
7173
skip: (page - 1) * this.perPage,
7274
take: this.perPage,
@@ -93,6 +95,7 @@ export class QueueListPresenter extends BasePresenter {
9395
queued: results[0][queue.name] ?? 0,
9496
concurrencyLimit: queue.concurrencyLimit ?? null,
9597
paused: queue.paused,
98+
releaseConcurrencyOnWaitpoint: queue.releaseConcurrencyOnWaitpoint,
9699
})
97100
);
98101
}

apps/webapp/app/presenters/v3/QueueRetrievePresenter.server.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ export class QueueRetrievePresenter extends BasePresenter {
7676
queued: results[0]?.[queue.name] ?? 0,
7777
concurrencyLimit: queue.concurrencyLimit ?? null,
7878
paused: queue.paused,
79+
releaseConcurrencyOnWaitpoint: queue.releaseConcurrencyOnWaitpoint,
7980
}),
8081
};
8182
}
@@ -105,6 +106,7 @@ export function toQueueItem(data: {
105106
queued: number;
106107
concurrencyLimit: number | null;
107108
paused: boolean;
109+
releaseConcurrencyOnWaitpoint: boolean;
108110
}): QueueItem {
109111
return {
110112
id: data.friendlyId,
@@ -115,5 +117,6 @@ export function toQueueItem(data: {
115117
queued: data.queued,
116118
concurrencyLimit: data.concurrencyLimit,
117119
paused: data.paused,
120+
releaseConcurrencyOnWaitpoint: data.releaseConcurrencyOnWaitpoint,
118121
};
119122
}

apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues/route.tsx

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,32 @@ export default function Page() {
295295
<TableHeaderCell>Name</TableHeaderCell>
296296
<TableHeaderCell alignment="right">Queued</TableHeaderCell>
297297
<TableHeaderCell alignment="right">Running</TableHeaderCell>
298+
<TableHeaderCell
299+
alignment="right"
300+
tooltip={
301+
<div className="max-w-xs p-1 text-left">
302+
<Paragraph
303+
variant="small"
304+
className="!text-wrap text-text-dimmed"
305+
spacing
306+
>
307+
When a task executing on this queue is paused and waiting for a
308+
waitpoint to complete, the queue will release the concurrency being used
309+
by the run so other runs can be started.
310+
</Paragraph>
311+
<LinkButton
312+
to={docsPath("v3/queues#release-concurrency-on-waitpoint")}
313+
variant="docs/small"
314+
LeadingIcon={BookOpenIcon}
315+
className="mt-3"
316+
>
317+
Read docs
318+
</LinkButton>
319+
</div>
320+
}
321+
>
322+
Release on waitpoint
323+
</TableHeaderCell>
298324
<TableHeaderCell alignment="right">Concurrency limit</TableHeaderCell>
299325
<TableHeaderCell className="w-[1%] pl-24">
300326
<span className="sr-only">Pause/resume</span>
@@ -354,6 +380,12 @@ export default function Page() {
354380
>
355381
{queue.running}
356382
</TableCell>
383+
<TableCell
384+
alignment="right"
385+
className={queue.paused ? "opacity-50" : undefined}
386+
>
387+
{queue.releaseConcurrencyOnWaitpoint ? "Yes" : "No"}
388+
</TableCell>
357389
<TableCell
358390
alignment="right"
359391
className={queue.paused ? "opacity-50" : undefined}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,7 @@ async function createWorkerQueue(
394394
data: {
395395
workers: { connect: { id: worker.id } },
396396
version: "V2",
397+
orderableName,
397398
},
398399
});
399400
}

packages/core/src/v3/schemas/queues.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ export const QueueItem = z.object({
3232
concurrencyLimit: z.number().nullable(),
3333
/** Whether the queue is paused. If it's paused, no new runs will be started. */
3434
paused: z.boolean(),
35+
/** Whether the queue releases concurrency on waitpoints. */
36+
releaseConcurrencyOnWaitpoint: z.boolean(),
3537
});
3638

3739
export type QueueItem = z.infer<typeof QueueItem>;

0 commit comments

Comments
 (0)