Skip to content

Commit 02a3f08

Browse files
temp commits
1 parent 5353724 commit 02a3f08

File tree

2 files changed

+49
-4
lines changed

2 files changed

+49
-4
lines changed

src/mongo_logger.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import {
3838
CONNECTION_READY
3939
} from './constants';
4040
import { HostAddress, parseUnsignedInteger } from './utils';
41+
import { MongoError } from './error';
4142

4243
/** @internal */
4344
export const SeverityLevel = Object.freeze({
@@ -174,6 +175,29 @@ export interface MongoLoggerOptions {
174175
logDestination: Writable | MongoDBLogWritable;
175176
}
176177

178+
/** @internal */
179+
export const ServerSelectionLogType = Object.freeze({
180+
START: 'start',
181+
SUCCESS: 'success',
182+
FAILURE: 'failure',
183+
WAITING: 'waiting'
184+
} as const);
185+
186+
/** @internal */
187+
export type ServerSelectionLogType =
188+
(typeof ServerSelectionLogType)[keyof typeof ServerSelectionLogType];
189+
190+
/** @internal */
191+
export interface ServerSelectionLogInputs {
192+
selector: string;
193+
operationId: number;
194+
operation: string;
195+
topologyDescription: string;
196+
serverHost?: string;
197+
serverPort?: number;
198+
failure?: MongoError;
199+
remainingTimeMS?: number;
200+
}
177201
/**
178202
* Parses a string as one of SeverityLevel
179203
*

src/sdam/topology.ts

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import {
3131
MongoTopologyClosedError
3232
} from '../error';
3333
import type { MongoClient, ServerApi } from '../mongo_client';
34+
import { ServerSelectionLogType, type ServerSelectionLogInputs, MongoLoggableComponent } from '../mongo_logger';
3435
import { TypedEventEmitter } from '../mongo_types';
3536
import { ReadPreference, type ReadPreferenceLike } from '../read_preference';
3637
import type { ClientSession } from '../sessions';
@@ -70,8 +71,6 @@ import { compareTopologyVersion, ServerDescription } from './server_description'
7071
import { readPreferenceServerSelector, type ServerSelector } from './server_selection';
7172
import { SrvPoller, type SrvPollingEvent } from './srv_polling';
7273
import { TopologyDescription } from './topology_description';
73-
import { LogConvertible } from '../mongo_logger';
74-
7574

7675
// Global state
7776
let globalTopologyCounter = 0;
@@ -508,6 +507,22 @@ export class Topology extends TypedEventEmitter<TopologyEvents> {
508507
.finally(() => callback?.());
509508
}
510509

510+
/** @internal */
511+
logServerSelection(logType: ServerSelectionLogType, inputs: ServerSelectionLogInputs): void {
512+
if (logType === ServerSelectionLogType.START) {
513+
const msg = `Server selection started for operation ${inputs.operation}} with ID ${inputs.operationId}. Selector: ${inputs.selector}}, topology description: ${inputs.topologyDescription}`;
514+
this.client.mongoLogger.debug(MongoLoggableComponent.TOPOLOGY, msg);
515+
} else if (logType === ServerSelectionLogType.SUCCESS) {
516+
const msg = `Server selection succeeded for operation ${inputs.operation}} with ID ${inputs.operationId}. Selected server: ${inputs.serverHost}:${inputs.serverPort}. Selector: ${inputs.selector}}, topology description: ${inputs.topologyDescription}`;
517+
this.client.mongoLogger.debug(MongoLoggableComponent.TOPOLOGY, msg);
518+
} else if (logType === ServerSelectionLogType.FAILURE) {
519+
const msg = `Server selection failed for operation ${inputs.operation}} with ID ${inputs.operationId}. Failure: ${inputs.failure} Selector: ${inputs.selector}}, topology description: ${inputs.topologyDescription}`;
520+
this.client.mongoLogger.debug(MongoLoggableComponent.TOPOLOGY, msg);
521+
} else if (logType === ServerSelectionLogType.WAITING) {
522+
const msg = `Waiting for server to become available for operation ${inputs.operation}} with ID ${inputs.operationId}. Remaining time: ${inputs.remainingTimeMS}} ms. Selector: ${inputs.selector}}, topology description: ${inputs.topologyDescription}`;
523+
this.client.mongoLogger.info(MongoLoggableComponent.TOPOLOGY, msg);
524+
}
525+
}
511526
/**
512527
* Selects a server according to the selection predicate provided
513528
*
@@ -522,7 +537,7 @@ export class Topology extends TypedEventEmitter<TopologyEvents> {
522537
callback: Callback<Server>
523538
): void {
524539
let serverSelector;
525-
this.client.mongoLogger.debug('topology', {
540+
this.logServerSelection(ServerSelectionLogType.START, {
526541
selector: 'selector',
527542
operationId: 100,
528543
operation: 'op',
@@ -575,7 +590,13 @@ export class Topology extends TypedEventEmitter<TopologyEvents> {
575590
`Server selection timed out after ${options.serverSelectionTimeoutMS} ms`,
576591
this.description
577592
);
578-
593+
this.logServerSelection(ServerSelectionLogType.FAILURE, {
594+
selector: 'selector',
595+
operationId: 100,
596+
operation: 'op',
597+
topologyDescription: 'topDesc',
598+
failure: timeoutError
599+
});
579600
waitQueueMember.callback(timeoutError);
580601
});
581602

0 commit comments

Comments
 (0)