From 843ff5f2d4e051d6cd08b00b0ccfec7b20d48b1a Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 10 Jan 2026 17:50:53 +0100 Subject: [PATCH] fix(sessions): tolerate ENOENT during lock --- src/config/sessions.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/config/sessions.ts b/src/config/sessions.ts index b6f649368..d4d638179 100644 --- a/src/config/sessions.ts +++ b/src/config/sessions.ts @@ -553,6 +553,15 @@ async function withSessionStoreLock( err && typeof err === "object" && "code" in err ? String((err as { code?: unknown }).code) : null; + if (code === "ENOENT") { + // Store directory may be deleted/recreated in tests while writes are in-flight. + // Best-effort: recreate the parent dir and retry until timeout. + await fs.promises + .mkdir(path.dirname(storePath), { recursive: true }) + .catch(() => undefined); + await new Promise((r) => setTimeout(r, pollIntervalMs)); + continue; + } if (code !== "EEXIST") throw err; const now = Date.now();