Skip to content

Commit ba8126f

Browse files
committed
agent-container: serialize workerd session runs
1 parent e234698 commit ba8126f

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

packages/agent-container/src/workerd/session.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,8 @@ export class LocalWorkerdSession implements WorkerdSession {
224224

225225
#bridge: LocalCapabilityBridgeServer | undefined;
226226

227+
#runQueue: Promise<void> = Promise.resolve();
228+
227229
private constructor(
228230
port: number,
229231
options: WorkerdSessionOptions,
@@ -335,6 +337,24 @@ export class LocalWorkerdSession implements WorkerdSession {
335337
public async run(
336338
input: WorkerdRunInput,
337339
options: WorkerdRunOptions = {},
340+
): Promise<WorkerdRunResult> {
341+
const previousRun = this.#runQueue;
342+
let releaseRun = (): void => {};
343+
this.#runQueue = new Promise<void>((resolve) => {
344+
releaseRun = resolve;
345+
});
346+
347+
await previousRun;
348+
try {
349+
return await this.#runUnlocked(input, options);
350+
} finally {
351+
releaseRun();
352+
}
353+
}
354+
355+
async #runUnlocked(
356+
input: WorkerdRunInput,
357+
options: WorkerdRunOptions,
338358
): Promise<WorkerdRunResult> {
339359
const preparedRun = await prepareWorkerdRun({
340360
input,

0 commit comments

Comments
 (0)