diff --git a/apps/stock/data-ingestion/src/handlers/qm/shared/session-manager.ts b/apps/stock/data-ingestion/src/handlers/qm/shared/session-manager.ts index 20abcba..8d0d25c 100644 --- a/apps/stock/data-ingestion/src/handlers/qm/shared/session-manager.ts +++ b/apps/stock/data-ingestion/src/handlers/qm/shared/session-manager.ts @@ -56,7 +56,7 @@ export class QMSessionManager { /** * Initialize with cache provider and logger */ - initialize(cache: CacheProvider, logger: Logger): void { + initialize(cache?: CacheProvider, logger?: Logger): void { if (cache) { this.setCacheProvider(cache); } @@ -113,11 +113,11 @@ export class QMSessionManager { return null; } - session = validSessions[Math.floor(Math.random() * validSessions.length)]; + session = validSessions[Math.floor(Math.random() * validSessions.length)] || null; this.logger?.trace(`Selected session`, { - uuid: session.uuid, - failedCalls: session.failedCalls, - successfulCalls: session.successfulCalls, + uuid: session?.uuid || 'null', + failedCalls: session?.failedCalls || 'null', + successfulCalls: session?.successfulCalls || 'null', }); } @@ -177,8 +177,13 @@ export class QMSessionManager { let removedCount = 0; Object.keys(this.sessionCache).forEach(sessionId => { - const initialCount = this.sessionCache[sessionId].length; - this.sessionCache[sessionId] = this.sessionCache[sessionId].filter( + const initialCount = this.sessionCache[sessionId]?.length; + if (!initialCount || this.sessionCache[sessionId] === undefined) { + this.logger?.trace(`No sessions to clean up for ${sessionId}`); + return; + } + + this.sessionCache[sessionId] = this.sessionCache[sessionId]?.filter( session => session.failedCalls <= SESSION_CONFIG.MAX_FAILED_CALLS ); removedCount += initialCount - this.sessionCache[sessionId].length; @@ -344,6 +349,10 @@ export class QMSessionManager { const id = `${sessionType.toLowerCase()}_${i}`; const sessionKey = `qm:sessions:${sessionType.toLowerCase()}:${id}`; + if(!session){ + this.logger?.warn(`Skipping empty session at index ${i} for ${sessionType}`); + continue; + } const cachedSession: CachedSession = { ...session, lastUsed: session.lastUsed instanceof Date ? session.lastUsed.toISOString() : session.lastUsed, diff --git a/libs/core/types/src/services.ts b/libs/core/types/src/services.ts index 058fd01..1009a2e 100644 --- a/libs/core/types/src/services.ts +++ b/libs/core/types/src/services.ts @@ -12,7 +12,8 @@ export interface Logger { error(message: string, meta?: Record): void; warn(message: string, meta?: Record): void; debug(message: string, meta?: Record): void; - trace?(message: string, meta?: Record): void; + trace(message: string, meta?: Record): void; + fatal(message: string, meta?: Record): void; child?(name: string, context?: Record): Logger; }