Skip to content

Commit f507be3

Browse files
committed
update the deadlock detection to use the new lockedQueueReleaseConcurrencyOnWaitpoint column
1 parent 949f404 commit f507be3

1 file changed

Lines changed: 17 additions & 28 deletions

File tree

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

Lines changed: 17 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,22 @@ export class DefaultRunChainStateManager implements RunChainStateManager {
5656
// Since the parent run is already running, it will definitely have a locked queue associated with it
5757
const { concurrency } = parentRunChainState;
5858

59+
const parentLockedQueueReleaseConcurrencyOnWaitpoint =
60+
parentRun.lockedQueueReleaseConcurrencyOnWaitpoint;
5961
const parentLockedQueueId = parentRun.lockedQueueId;
6062

63+
if (typeof parentLockedQueueReleaseConcurrencyOnWaitpoint !== "boolean") {
64+
logger.error(
65+
"Parent run has no locked queue release concurrency on waitpoint, cannot determine run chain state",
66+
{
67+
runId: parentRun.id,
68+
runState: parentRun.runChainState,
69+
}
70+
);
71+
72+
return {};
73+
}
74+
6175
if (!parentLockedQueueId) {
6276
logger.error("Parent run has no locked queue, cannot determine run chain state", {
6377
runId: parentRun.id,
@@ -101,7 +115,7 @@ export class DefaultRunChainStateManager implements RunChainStateManager {
101115
// if it does, we will add to the holding count for the queue
102116
const willReleaseConcurrency = await this.#determineIfParentRunWillReleaseConcurrency(
103117
request,
104-
parentLockedQueueId
118+
parentLockedQueueReleaseConcurrencyOnWaitpoint
105119
);
106120

107121
if (!willReleaseConcurrency) {
@@ -194,38 +208,13 @@ export class DefaultRunChainStateManager implements RunChainStateManager {
194208

195209
async #determineIfParentRunWillReleaseConcurrency(
196210
request: TriggerTaskRequest,
197-
parentLockedQueueId: string
211+
parentLockedQueueReleaseConcurrencyOnWaitpoint: boolean
198212
) {
199213
if (typeof request.body.options?.releaseConcurrency === "boolean") {
200214
return request.body.options.releaseConcurrency;
201215
}
202216

203-
const parentQueue = await this.prisma.taskQueue.findFirst({
204-
where: {
205-
id: parentLockedQueueId,
206-
},
207-
select: {
208-
releaseConcurrencyOnWaitpoint: true,
209-
concurrencyLimit: true,
210-
},
211-
});
212-
213-
logger.debug("Determining if parent run will release concurrency", {
214-
parentQueue,
215-
});
216-
217-
if (
218-
typeof parentQueue?.concurrencyLimit === "undefined" ||
219-
parentQueue.concurrencyLimit === null
220-
) {
221-
return true;
222-
}
223-
224-
if (typeof parentQueue?.releaseConcurrencyOnWaitpoint === "boolean") {
225-
return parentQueue.releaseConcurrencyOnWaitpoint;
226-
}
227-
228-
return false;
217+
return parentLockedQueueReleaseConcurrencyOnWaitpoint;
229218
}
230219

231220
async #getParentQueueState(runChainState: RunChainState, parentLockedQueueId: string) {

0 commit comments

Comments
 (0)