remove old sessions

This commit is contained in:
Boki 2025-06-29 17:17:49 -04:00
parent 8f1613697c
commit bb16a52bf7

View file

@ -70,9 +70,11 @@ export class QMSessionManager {
// Get all sessions for this session type
const sessions = await this.getSessions(sessionId);
// Filter out failed sessions
// Filter out failed and stale sessions
const tenMinutesAgo = new Date(Date.now() - 10 * 60 * 1000);
const validSessions = sessions.filter(
session => session.failedCalls <= SESSION_CONFIG.MAX_FAILED_CALLS
session => session.failedCalls <= SESSION_CONFIG.MAX_FAILED_CALLS &&
session.lastUsed >= tenMinutesAgo
);
this.logger?.trace(`Found ${validSessions.length} valid sessions for ${sessionId}`, {
@ -193,11 +195,15 @@ export class QMSessionManager {
*/
async getSessionCount(sessionId: string): Promise<number> {
const sessions = await this.getSessions(sessionId);
return sessions.filter(s => (s.failedCalls || 0) <= SESSION_CONFIG.MAX_FAILED_CALLS).length;
const tenMinutesAgo = new Date(Date.now() - 10 * 60 * 1000);
return sessions.filter(s =>
(s.failedCalls || 0) <= SESSION_CONFIG.MAX_FAILED_CALLS &&
s.lastUsed >= tenMinutesAgo
).length;
}
/**
* Cleanup failed sessions
* Cleanup failed and stale sessions
*/
async cleanupFailedSessions(): Promise<number> {
if (!this.cacheProvider) {
@ -213,15 +219,22 @@ export class QMSessionManager {
const updatedList: string[] = [];
for (const session of sessions) {
if ((session.failedCalls || 0) > SESSION_CONFIG.MAX_FAILED_CALLS) {
// Delete the failed session
const tenMinutesAgo = new Date(Date.now() - 10 * 60 * 1000);
const isStale = session.lastUsed < tenMinutesAgo;
const isFailed = (session.failedCalls || 0) > SESSION_CONFIG.MAX_FAILED_CALLS;
if (isFailed || isStale) {
// Delete the failed or stale session
const sessionKey = `qm:sessions:${sessionType.toLowerCase()}:${session.uuid}`;
await this.cacheProvider.del(sessionKey);
removedCount++;
this.logger?.info(`Removed failed session`, {
this.logger?.info(`Removed ${isFailed ? 'failed' : 'stale'} session`, {
sessionType,
uuid: session.uuid,
failedCalls: session.failedCalls
failedCalls: session.failedCalls,
lastUsed: session.lastUsed,
isStale,
isFailed
});
} else {
updatedList.push(session.uuid);