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
|
||||
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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue