From f4782e1e730e0459142df02769bed0c8eb107a4e Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 15 Feb 2026 16:30:01 +0000 Subject: [PATCH] refactor(agents): dedupe session write lock release --- src/agents/session-write-lock.ts | 41 ++++++++++++-------------------- 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/src/agents/session-write-lock.ts b/src/agents/session-write-lock.ts index 1164598b77..6c6bf89745 100644 --- a/src/agents/session-write-lock.ts +++ b/src/agents/session-write-lock.ts @@ -162,24 +162,25 @@ export async function acquireSessionWriteLock(params: { } const normalizedSessionFile = path.join(normalizedDir, path.basename(sessionFile)); const lockPath = `${normalizedSessionFile}.lock`; + const release = async () => { + const current = HELD_LOCKS.get(normalizedSessionFile); + if (!current) { + return; + } + current.count -= 1; + if (current.count > 0) { + return; + } + HELD_LOCKS.delete(normalizedSessionFile); + await current.handle.close(); + await fs.rm(current.lockPath, { force: true }); + }; const held = HELD_LOCKS.get(normalizedSessionFile); if (held) { held.count += 1; return { - release: async () => { - const current = HELD_LOCKS.get(normalizedSessionFile); - if (!current) { - return; - } - current.count -= 1; - if (current.count > 0) { - return; - } - HELD_LOCKS.delete(normalizedSessionFile); - await current.handle.close(); - await fs.rm(current.lockPath, { force: true }); - }, + release, }; } @@ -195,19 +196,7 @@ export async function acquireSessionWriteLock(params: { ); HELD_LOCKS.set(normalizedSessionFile, { count: 1, handle, lockPath }); return { - release: async () => { - const current = HELD_LOCKS.get(normalizedSessionFile); - if (!current) { - return; - } - current.count -= 1; - if (current.count > 0) { - return; - } - HELD_LOCKS.delete(normalizedSessionFile); - await current.handle.close(); - await fs.rm(current.lockPath, { force: true }); - }, + release, }; } catch (err) { const code = (err as { code?: unknown }).code;