diff --git a/apps/webapp/app/components/primitives/Table.tsx b/apps/webapp/app/components/primitives/Table.tsx index 74ae01a60..447e1fdce 100644 --- a/apps/webapp/app/components/primitives/Table.tsx +++ b/apps/webapp/app/components/primitives/Table.tsx @@ -161,7 +161,12 @@ export const TableHeaderCell = forwardRef{children} ) : tooltip ? ( -
+
{children}
diff --git a/apps/webapp/app/presenters/v3/QueueListPresenter.server.ts b/apps/webapp/app/presenters/v3/QueueListPresenter.server.ts index 4679b43b8..287a82f4a 100644 --- a/apps/webapp/app/presenters/v3/QueueListPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/QueueListPresenter.server.ts @@ -61,12 +61,14 @@ export class QueueListPresenter extends BasePresenter { select: { friendlyId: true, name: true, + orderableName: true, concurrencyLimit: true, type: true, paused: true, + releaseConcurrencyOnWaitpoint: true, }, orderBy: { - name: "asc", + orderableName: "asc", }, skip: (page - 1) * this.perPage, take: this.perPage, @@ -93,6 +95,7 @@ export class QueueListPresenter extends BasePresenter { queued: results[0][queue.name] ?? 0, concurrencyLimit: queue.concurrencyLimit ?? null, paused: queue.paused, + releaseConcurrencyOnWaitpoint: queue.releaseConcurrencyOnWaitpoint, }) ); } diff --git a/apps/webapp/app/presenters/v3/QueueRetrievePresenter.server.ts b/apps/webapp/app/presenters/v3/QueueRetrievePresenter.server.ts index 6f297bc8b..12e8e8629 100644 --- a/apps/webapp/app/presenters/v3/QueueRetrievePresenter.server.ts +++ b/apps/webapp/app/presenters/v3/QueueRetrievePresenter.server.ts @@ -76,6 +76,7 @@ export class QueueRetrievePresenter extends BasePresenter { queued: results[0]?.[queue.name] ?? 0, concurrencyLimit: queue.concurrencyLimit ?? null, paused: queue.paused, + releaseConcurrencyOnWaitpoint: queue.releaseConcurrencyOnWaitpoint, }), }; } @@ -105,6 +106,7 @@ export function toQueueItem(data: { queued: number; concurrencyLimit: number | null; paused: boolean; + releaseConcurrencyOnWaitpoint: boolean; }): QueueItem { return { id: data.friendlyId, @@ -115,5 +117,6 @@ export function toQueueItem(data: { queued: data.queued, concurrencyLimit: data.concurrencyLimit, paused: data.paused, + releaseConcurrencyOnWaitpoint: data.releaseConcurrencyOnWaitpoint, }; } diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues/route.tsx index b6638f878..faddc505a 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.queues/route.tsx @@ -295,6 +295,32 @@ export default function Page() { Name Queued Running + + + When a task executing on this queue is paused and waiting for a + waitpoint to complete, the queue will release the concurrency being used + by the run so other runs can be started. + + + Read docs + +
+ } + > + Release on waitpoint + Concurrency limit Pause/resume @@ -354,6 +380,12 @@ export default function Page() { > {queue.running} + + {queue.releaseConcurrencyOnWaitpoint ? "Yes" : "No"} + ;