Skip to content

Commit 7d3acf7

Browse files
committed
chore: address comments from #361
1 parent 1297ed9 commit 7d3acf7

File tree

2 files changed

+27
-19
lines changed

2 files changed

+27
-19
lines changed

src/common/logger.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,9 @@ export const LogId = {
4444
streamableHttpTransportStarted: mongoLogId(1_006_001),
4545
streamableHttpTransportSessionCloseFailure: mongoLogId(1_006_002),
4646
streamableHttpTransportSessionCloseNotification: mongoLogId(1_006_003),
47-
streamableHttpTransportRequestFailure: mongoLogId(1_006_004),
48-
streamableHttpTransportCloseFailure: mongoLogId(1_006_005),
47+
streamableHttpTransportSessionCloseNotificationFailure: mongoLogId(1_006_004),
48+
streamableHttpTransportRequestFailure: mongoLogId(1_006_005),
49+
streamableHttpTransportCloseFailure: mongoLogId(1_006_006),
4950
} as const;
5051

5152
export abstract class LoggerBase {

src/common/sessionStore.ts

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
22
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3-
import logger, { LogId, McpLogger } from "./logger.js";
3+
import logger, { LogId, LoggerBase, McpLogger } from "./logger.js";
44
import { TimeoutManager } from "./timeoutManager.js";
55

66
export class SessionStore {
77
private sessions: {
88
[sessionId: string]: {
9-
mcpServer: McpServer;
9+
logger: LoggerBase;
1010
transport: StreamableHTTPServerTransport;
1111
abortTimeout: TimeoutManager;
1212
notificationTimeout: TimeoutManager;
@@ -47,46 +47,53 @@ export class SessionStore {
4747
private sendNotification(sessionId: string): void {
4848
const session = this.sessions[sessionId];
4949
if (!session) {
50+
logger.warning(
51+
LogId.streamableHttpTransportSessionCloseNotificationFailure,
52+
"sessionStore",
53+
`session ${sessionId} not found, no notification delivered`
54+
);
5055
return;
5156
}
52-
const logger = new McpLogger(session.mcpServer);
53-
logger.info(
57+
session.logger.info(
5458
LogId.streamableHttpTransportSessionCloseNotification,
5559
"sessionStore",
5660
"Session is about to be closed due to inactivity"
5761
);
5862
}
5963

6064
setSession(sessionId: string, transport: StreamableHTTPServerTransport, mcpServer: McpServer): void {
61-
if (this.sessions[sessionId]) {
65+
const session = this.sessions[sessionId];
66+
if (session) {
6267
throw new Error(`Session ${sessionId} already exists`);
6368
}
6469
const abortTimeout = new TimeoutManager(async () => {
65-
const logger = new McpLogger(mcpServer);
66-
logger.info(
67-
LogId.streamableHttpTransportSessionCloseNotification,
68-
"sessionStore",
69-
"Session closed due to inactivity"
70-
);
70+
if (this.sessions[sessionId]) {
71+
this.sessions[sessionId].logger.info(
72+
LogId.streamableHttpTransportSessionCloseNotification,
73+
"sessionStore",
74+
"Session closed due to inactivity"
75+
);
7176

72-
await this.closeSession(sessionId);
77+
await this.closeSession(sessionId);
78+
}
7379
}, this.idleTimeoutMS);
7480
const notificationTimeout = new TimeoutManager(
7581
() => this.sendNotification(sessionId),
7682
this.notificationTimeoutMS
7783
);
78-
this.sessions[sessionId] = { mcpServer, transport, abortTimeout, notificationTimeout };
84+
this.sessions[sessionId] = { logger: new McpLogger(mcpServer), transport, abortTimeout, notificationTimeout };
7985
}
8086

8187
async closeSession(sessionId: string, closeTransport: boolean = true): Promise<void> {
82-
if (!this.sessions[sessionId]) {
88+
const session = this.sessions[sessionId];
89+
if (!session) {
8390
throw new Error(`Session ${sessionId} not found`);
8491
}
85-
this.sessions[sessionId].abortTimeout.clear();
86-
this.sessions[sessionId].notificationTimeout.clear();
92+
session.abortTimeout.clear();
93+
session.notificationTimeout.clear();
8794
if (closeTransport) {
8895
try {
89-
await this.sessions[sessionId].transport.close();
96+
await session.transport.close();
9097
} catch (error) {
9198
logger.error(
9299
LogId.streamableHttpTransportSessionCloseFailure,

0 commit comments

Comments
 (0)