From 3c17f6a89d448a6c5b2dad2af1b2d3332f1d091c Mon Sep 17 00:00:00 2001 From: mARTin Date: Thu, 19 Mar 2026 22:52:44 +0100 Subject: [PATCH] fix: prevent session loading hang from JWT callback DB failure JWT callback was querying DB on every request which could hang if DB is slow. Now only queries when token.id is missing, and wraps in try/catch so session still resolves on DB errors. v1.52.1 Co-Authored-By: Claude Opus 4.6 --- package.json | 2 +- src/lib/auth.ts | 20 ++++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 8076536..a1dfce0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "my-weekly-todo-list", - "version": "1.52.0", + "version": "1.52.1", "description": "A web-based weekly task management application that organizes to-dos and calendar events in a single, intuitive weekly view", "main": "index.js", "scripts": { diff --git a/src/lib/auth.ts b/src/lib/auth.ts index 9d7c243..ba76f28 100644 --- a/src/lib/auth.ts +++ b/src/lib/auth.ts @@ -113,14 +113,18 @@ export const authOptions: NextAuthOptions = { if (user) { token.id = user.id; } - // Refresh user ID from DB to handle stale sessions after DB changes - if (token.email) { - const dbUser = await prisma.user.findUnique({ - where: { email: token.email as string }, - select: { id: true } - }); - if (dbUser) { - token.id = dbUser.id; + // Refresh user ID from DB periodically (not on every request) + if (token.email && !token.id) { + try { + const dbUser = await prisma.user.findUnique({ + where: { email: token.email as string }, + select: { id: true } + }); + if (dbUser) { + token.id = dbUser.id; + } + } catch (e) { + console.error("[AUTH] JWT callback DB lookup failed:", e); } } return token;