remove old sessions
This commit is contained in:
parent
8f1613697c
commit
bb16a52bf7
1 changed files with 21 additions and 8 deletions
|
|
@ -70,9 +70,11 @@ export class QMSessionManager {
|
||||||
// Get all sessions for this session type
|
// Get all sessions for this session type
|
||||||
const sessions = await this.getSessions(sessionId);
|
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(
|
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}`, {
|
this.logger?.trace(`Found ${validSessions.length} valid sessions for ${sessionId}`, {
|
||||||
|
|
@ -193,11 +195,15 @@ export class QMSessionManager {
|
||||||
*/
|
*/
|
||||||
async getSessionCount(sessionId: string): Promise<number> {
|
async getSessionCount(sessionId: string): Promise<number> {
|
||||||
const sessions = await this.getSessions(sessionId);
|
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> {
|
async cleanupFailedSessions(): Promise<number> {
|
||||||
if (!this.cacheProvider) {
|
if (!this.cacheProvider) {
|
||||||
|
|
@ -213,15 +219,22 @@ export class QMSessionManager {
|
||||||
const updatedList: string[] = [];
|
const updatedList: string[] = [];
|
||||||
|
|
||||||
for (const session of sessions) {
|
for (const session of sessions) {
|
||||||
if ((session.failedCalls || 0) > SESSION_CONFIG.MAX_FAILED_CALLS) {
|
const tenMinutesAgo = new Date(Date.now() - 10 * 60 * 1000);
|
||||||
// Delete the failed session
|
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}`;
|
const sessionKey = `qm:sessions:${sessionType.toLowerCase()}:${session.uuid}`;
|
||||||
await this.cacheProvider.del(sessionKey);
|
await this.cacheProvider.del(sessionKey);
|
||||||
removedCount++;
|
removedCount++;
|
||||||
this.logger?.info(`Removed failed session`, {
|
this.logger?.info(`Removed ${isFailed ? 'failed' : 'stale'} session`, {
|
||||||
sessionType,
|
sessionType,
|
||||||
uuid: session.uuid,
|
uuid: session.uuid,
|
||||||
failedCalls: session.failedCalls
|
failedCalls: session.failedCalls,
|
||||||
|
lastUsed: session.lastUsed,
|
||||||
|
isStale,
|
||||||
|
isFailed
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
updatedList.push(session.uuid);
|
updatedList.push(session.uuid);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue