Skip to content

Commit a3df32c

Browse files
chore: disconnect sessionId and ExportsManager unique path id
1 parent 701003f commit a3df32c

File tree

8 files changed

+18
-28
lines changed

8 files changed

+18
-28
lines changed

src/common/exportsManager.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import fs from "fs/promises";
44
import EventEmitter from "events";
55
import { createWriteStream } from "fs";
66
import { FindCursor } from "mongodb";
7-
import { EJSON, EJSONOptions } from "bson";
7+
import { EJSON, EJSONOptions, ObjectId } from "bson";
88
import { Transform } from "stream";
99
import { pipeline } from "stream/promises";
1010

@@ -335,7 +335,11 @@ export class ExportsManager extends EventEmitter<ExportsManagerEvents> {
335335
}
336336
}
337337

338-
static init(sessionId: string, config: ExportsManagerConfig, logger: LoggerBase): ExportsManager {
338+
static init(
339+
config: ExportsManagerConfig,
340+
logger: LoggerBase,
341+
sessionId = new ObjectId().toString()
342+
): ExportsManager {
339343
const exportsDirectoryPath = path.join(config.exportsPath, sessionId);
340344
const exportsManager = new ExportsManager(exportsDirectoryPath, config, logger);
341345
exportsManager.init();

src/common/session.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { ObjectId } from "bson";
12
import { ApiClient, ApiClientCredentials } from "./atlas/apiClient.js";
23
import { Implementation } from "@modelcontextprotocol/sdk/types.js";
34
import { CompositeLogger, LogId } from "./logger.js";
@@ -17,7 +18,6 @@ export interface SessionOptions {
1718
apiClientId?: string;
1819
apiClientSecret?: string;
1920
logger: CompositeLogger;
20-
sessionId: string;
2121
exportsManager: ExportsManager;
2222
connectionManager: ConnectionManager;
2323
}
@@ -30,7 +30,7 @@ export type SessionEvents = {
3030
};
3131

3232
export class Session extends EventEmitter<SessionEvents> {
33-
readonly sessionId: string;
33+
readonly sessionId: string = new ObjectId().toString();
3434
readonly exportsManager: ExportsManager;
3535
readonly connectionManager: ConnectionManager;
3636
readonly apiClient: ApiClient;
@@ -46,7 +46,6 @@ export class Session extends EventEmitter<SessionEvents> {
4646
apiClientId,
4747
apiClientSecret,
4848
logger,
49-
sessionId,
5049
connectionManager,
5150
exportsManager,
5251
}: SessionOptions) {
@@ -62,8 +61,6 @@ export class Session extends EventEmitter<SessionEvents> {
6261
: undefined;
6362

6463
this.apiClient = new ApiClient({ baseUrl: apiBaseUrl, credentials }, logger);
65-
66-
this.sessionId = sessionId;
6764
this.exportsManager = exportsManager;
6865
this.connectionManager = connectionManager;
6966
this.connectionManager.on("connection-succeeded", () => this.emit("connect"));

src/transports/base.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import { Session } from "../common/session.js";
55
import { Telemetry } from "../telemetry/telemetry.js";
66
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
77
import { CompositeLogger, ConsoleLogger, DiskLogger, LoggerBase, McpLogger } from "../common/logger.js";
8-
import { ObjectId } from "bson";
98
import { ExportsManager } from "../common/exportsManager.js";
109
import { ConnectionManager } from "../common/connectionManager.js";
1110

@@ -43,16 +42,14 @@ export abstract class TransportRunnerBase {
4342
}
4443

4544
const logger = new CompositeLogger(...loggers);
46-
const sessionId = new ObjectId().toString();
47-
const exportsManager = ExportsManager.init(sessionId, userConfig, logger);
45+
const exportsManager = ExportsManager.init(userConfig, logger);
4846
const connectionManager = new ConnectionManager();
4947

5048
const session = new Session({
5149
apiBaseUrl: userConfig.apiBaseUrl,
5250
apiClientId: userConfig.apiClientId,
5351
apiClientSecret: userConfig.apiClientSecret,
5452
logger,
55-
sessionId,
5653
exportsManager,
5754
connectionManager,
5855
});

tests/integration/helpers.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { ObjectId } from "bson";
21
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
32
import { InMemoryTransport } from "./inMemoryTransport.js";
43
import { Server } from "../../src/server.js";
@@ -58,16 +57,14 @@ export function setupIntegrationTest(getUserConfig: () => UserConfig): Integrati
5857
);
5958

6059
const logger = new CompositeLogger();
61-
const sessionId = new ObjectId().toString();
62-
const exportsManager = ExportsManager.init(sessionId, userConfig, logger);
60+
const exportsManager = ExportsManager.init(userConfig, logger);
6361
const connectionManager = new ConnectionManager();
6462

6563
const session = new Session({
6664
apiBaseUrl: userConfig.apiBaseUrl,
6765
apiClientId: userConfig.apiClientId,
6866
apiClientSecret: userConfig.apiClientSecret,
6967
logger,
70-
sessionId,
7168
exportsManager,
7269
connectionManager,
7370
});

tests/integration/telemetry.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@ describe("Telemetry", () => {
1919
new Session({
2020
apiBaseUrl: "",
2121
logger: new CompositeLogger(),
22-
sessionId: "1FOO",
23-
exportsManager: ExportsManager.init("1FOO", config, logger),
22+
exportsManager: ExportsManager.init(config, logger),
2423
connectionManager: new ConnectionManager(),
2524
}),
2625
config

tests/unit/common/exportsManager.test.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,10 @@ describe("ExportsManager unit test", () => {
113113
beforeEach(async () => {
114114
await fs.mkdir(exportsManagerConfig.exportsPath, { recursive: true });
115115
const logger = new CompositeLogger();
116-
const sessionId = new ObjectId().toString();
117116
session = new Session({
118117
apiBaseUrl: "",
119118
logger,
120-
sessionId,
121-
exportsManager: ExportsManager.init(sessionId, exportsManagerConfig, logger),
119+
exportsManager: ExportsManager.init(exportsManagerConfig, logger),
122120
connectionManager: new ConnectionManager(),
123121
});
124122
manager = session.exportsManager;
@@ -460,13 +458,13 @@ describe("ExportsManager unit test", () => {
460458
it("should not clean up in-progress exports", async () => {
461459
const { exportName } = getExportNameAndPath(session.sessionId);
462460
const manager = ExportsManager.init(
463-
session.sessionId,
464461
{
465462
...exportsManagerConfig,
466463
exportTimeoutMs: 100,
467464
exportCleanupIntervalMs: 50,
468465
},
469-
new CompositeLogger()
466+
new CompositeLogger(),
467+
session.sessionId
470468
);
471469
const { cursor } = createDummyFindCursorWithDelay([{ name: "Test" }], 2000);
472470
manager.createJSONExport({
@@ -488,13 +486,13 @@ describe("ExportsManager unit test", () => {
488486
it("should cleanup expired exports", async () => {
489487
const { exportName, exportPath, exportURI } = getExportNameAndPath(session.sessionId);
490488
const manager = ExportsManager.init(
491-
session.sessionId,
492489
{
493490
...exportsManagerConfig,
494491
exportTimeoutMs: 100,
495492
exportCleanupIntervalMs: 50,
496493
},
497-
new CompositeLogger()
494+
new CompositeLogger(),
495+
session.sessionId
498496
);
499497
manager.createJSONExport({
500498
input: cursor,

tests/unit/common/session.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@ describe("Session", () => {
1717
apiClientId: "test-client-id",
1818
apiBaseUrl: "https://api.test.com",
1919
logger,
20-
sessionId: "1FOO",
21-
exportsManager: ExportsManager.init("1FOO", config, logger),
20+
exportsManager: ExportsManager.init(config, logger),
2221
connectionManager: new ConnectionManager(),
2322
});
2423

tests/unit/resources/common/debug.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ describe("debug resource", () => {
1212
const session = new Session({
1313
apiBaseUrl: "",
1414
logger,
15-
sessionId: "1FOO",
16-
exportsManager: ExportsManager.init("1FOO", config, logger),
15+
exportsManager: ExportsManager.init(config, logger),
1716
connectionManager: new ConnectionManager(),
1817
});
1918
const telemetry = Telemetry.create(session, { ...config, telemetry: "disabled" });

0 commit comments

Comments
 (0)