debug: add detailed logs for session restoration

This commit is contained in:
2025-10-15 15:43:21 -05:00
parent c2f3454a38
commit 09d26efa0d
2 changed files with 20 additions and 6 deletions

View File

@@ -531,6 +531,7 @@ export class TrytonClient {
*/ */
async restoreSession(sessionToken: string): Promise<boolean> { async restoreSession(sessionToken: string): Promise<boolean> {
try { try {
console.log("🔐 restoreSession: Iniciando restauración...");
// Parsear el token guardado // Parsear el token guardado
const parts = sessionToken.split(":"); const parts = sessionToken.split(":");
if (parts.length < 3) { if (parts.length < 3) {
@@ -539,30 +540,37 @@ export class TrytonClient {
const [username, userId, ...sessionKeyParts] = parts; const [username, userId, ...sessionKeyParts] = parts;
const sessionKey = sessionKeyParts.join(":"); // Por si el sessionKey tiene ":" const sessionKey = sessionKeyParts.join(":"); // Por si el sessionKey tiene ":"
console.log(`🔐 Token parseado: user=${username}, id=${userId}`);
// Establecer la sesión sin hacer login // Establecer la sesión sin hacer login
this.session = sessionToken; 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) { if (this.connection) {
console.log("🔐 Actualizando sesión en connection pool...");
this.connection.setSession(sessionToken); this.connection.setSession(sessionToken);
} else {
throw new Error("No connection pool available");
} }
// Verificar que la sesión sigue siendo válida // Obtener proxy (ahora con la sesión ya actualizada)
const proxy = this.connection?.getConnection(); console.log("🔐 Obteniendo proxy con sesión actualizada...");
if (!proxy) { const proxy = this.connection.getConnection();
throw new Error("No connection available");
}
// Test de validación de sesión // Test de validación de sesión
try { try {
console.log("🔐 Validando sesión con Tryton server...");
await proxy.request("common.version", []); await proxy.request("common.version", []);
console.log("✅ Sesión restaurada exitosamente"); console.log("✅ Sesión restaurada exitosamente");
this.connection.putConnection(proxy); // Devolver conexión al pool
return true; return true;
} catch (error) { } catch (error) {
// Sesión inválida o expirada // Sesión inválida o expirada
console.error("❌ Error en validación:", error);
this.session = null; this.session = null;
console.log("❌ Sesión inválida o expirada"); console.log("❌ Sesión inválida o expirada");
this.connection.putConnection(proxy); // Devolver conexión al pool
return false; return false;
} }
} catch (error) { } catch (error) {

View File

@@ -480,6 +480,7 @@ export class ServerProxy {
: null; : null;
this.useHttps = options.useHttps || false; this.useHttps = options.useHttps || false;
console.log(`🔨 ServerProxy constructor: session=${options.session?.substring(0, 30) || 'undefined'}...`);
this.transport = new Transport({ this.transport = new Transport({
fingerprints: options.fingerprints, fingerprints: options.fingerprints,
caCerts: options.caCerts, caCerts: options.caCerts,
@@ -651,18 +652,23 @@ export class ServerPool {
* @param {string} session - New session string * @param {string} session - New session string
*/ */
setSession(session: string): void { setSession(session: string): void {
console.log("🔧 ServerPool.setSession: Actualizando sesión...");
console.log(`🔧 Sesión nueva: ${session.substring(0, 30)}...`);
this.session = session; this.session = session;
this.options.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 // Update session for all existing connections and their transports
for (const conn of this.pool) { for (const conn of this.pool) {
if ((conn as any).transport) { if ((conn as any).transport) {
(conn as any).transport.session = session; (conn as any).transport.session = session;
console.log("🔧 Sesión actualizada en pool connection transport");
} }
} }
for (const conn of this.used) { for (const conn of this.used) {
if ((conn as any).transport) { if ((conn as any).transport) {
(conn as any).transport.session = session; (conn as any).transport.session = session;
console.log("🔧 Sesión actualizada en used connection transport");
} }
} }
} }