From 09d26efa0d5c0919bbb2f0e159a4b96c65129a2c Mon Sep 17 00:00:00 2001 From: Juan Diego Moreno Upegui Date: Wed, 15 Oct 2025 15:43:21 -0500 Subject: [PATCH] debug: add detailed logs for session restoration --- src/client.ts | 20 ++++++++++++++------ src/jsonrpc.ts | 6 ++++++ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/client.ts b/src/client.ts index fd67391..af964c9 100644 --- a/src/client.ts +++ b/src/client.ts @@ -531,6 +531,7 @@ export class TrytonClient { */ async restoreSession(sessionToken: string): Promise { try { + console.log("🔐 restoreSession: Iniciando restauración..."); // Parsear el token guardado const parts = sessionToken.split(":"); if (parts.length < 3) { @@ -539,30 +540,37 @@ export class TrytonClient { const [username, userId, ...sessionKeyParts] = parts; const sessionKey = sessionKeyParts.join(":"); // Por si el sessionKey tiene ":" + console.log(`🔐 Token parseado: user=${username}, id=${userId}`); // Establecer la sesión sin hacer login this.session = sessionToken; + console.log("🔐 Session establecida en client:", this.session?.substring(0, 30) + "..."); - // Actualizar la sesión en el connection pool + // Actualizar la sesión en el connection pool ANTES de obtener proxy if (this.connection) { + console.log("🔐 Actualizando sesión en connection pool..."); this.connection.setSession(sessionToken); + } else { + throw new Error("No connection pool available"); } - // Verificar que la sesión sigue siendo válida - const proxy = this.connection?.getConnection(); - if (!proxy) { - throw new Error("No connection available"); - } + // Obtener proxy (ahora con la sesión ya actualizada) + console.log("🔐 Obteniendo proxy con sesión actualizada..."); + const proxy = this.connection.getConnection(); // Test de validación de sesión try { + console.log("🔐 Validando sesión con Tryton server..."); await proxy.request("common.version", []); console.log("✅ Sesión restaurada exitosamente"); + this.connection.putConnection(proxy); // Devolver conexión al pool return true; } catch (error) { // Sesión inválida o expirada + console.error("❌ Error en validación:", error); this.session = null; console.log("❌ Sesión inválida o expirada"); + this.connection.putConnection(proxy); // Devolver conexión al pool return false; } } catch (error) { diff --git a/src/jsonrpc.ts b/src/jsonrpc.ts index fea5248..17225fd 100644 --- a/src/jsonrpc.ts +++ b/src/jsonrpc.ts @@ -480,6 +480,7 @@ export class ServerProxy { : null; this.useHttps = options.useHttps || false; + console.log(`🔨 ServerProxy constructor: session=${options.session?.substring(0, 30) || 'undefined'}...`); this.transport = new Transport({ fingerprints: options.fingerprints, caCerts: options.caCerts, @@ -651,18 +652,23 @@ export class ServerPool { * @param {string} session - New session string */ setSession(session: string): void { + console.log("🔧 ServerPool.setSession: Actualizando sesión..."); + console.log(`🔧 Sesión nueva: ${session.substring(0, 30)}...`); this.session = session; this.options.session = session; + console.log(`🔧 Pool connections: ${this.pool.length}, Used connections: ${this.used.size}`); // Update session for all existing connections and their transports for (const conn of this.pool) { if ((conn as any).transport) { (conn as any).transport.session = session; + console.log("🔧 Sesión actualizada en pool connection transport"); } } for (const conn of this.used) { if ((conn as any).transport) { (conn as any).transport.session = session; + console.log("🔧 Sesión actualizada en used connection transport"); } } }