Skip to content

Commit ffeead4

Browse files
reauth support for connection.established
1 parent cbb5df6 commit ffeead4

File tree

4 files changed

+31
-8
lines changed

4 files changed

+31
-8
lines changed

src/cmap/auth/auth_provider.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,11 @@ export abstract class AuthProvider {
6464
throw new MongoRuntimeError('Reauthentication already in progress.');
6565
}
6666
try {
67+
context.connection.established = false;
6768
context.reauthenticating = true;
6869
await this.auth(context);
6970
} finally {
71+
context.connection.established = true;
7072
context.reauthenticating = false;
7173
}
7274
}

src/cmap/connection.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -186,8 +186,6 @@ export class Connection extends TypedEventEmitter<ConnectionEvents> {
186186
private messageStream: Readable;
187187
private socketWrite: (buffer: Uint8Array) => Promise<void>;
188188
private clusterTime: Document | null = null;
189-
/** @internal */
190-
override component = MongoLoggableComponent.COMMAND;
191189
/** @internal */
192190
override mongoLogger: MongoLogger | undefined;
193191

@@ -461,7 +459,8 @@ export class Connection extends TypedEventEmitter<ConnectionEvents> {
461459
let started = 0;
462460
if (
463461
this.monitorCommands ||
464-
(this.established && this.mongoLogger?.willLog(SeverityLevel.DEBUG, this.component))
462+
(this.established &&
463+
this.mongoLogger?.willLog(SeverityLevel.DEBUG, MongoLoggableComponent.COMMAND))
465464
) {
466465
started = now();
467466
this.emitAndLogCommand(
@@ -490,7 +489,8 @@ export class Connection extends TypedEventEmitter<ConnectionEvents> {
490489

491490
if (
492491
this.monitorCommands ||
493-
(this.established && this.mongoLogger?.willLog(SeverityLevel.DEBUG, this.component))
492+
(this.established &&
493+
this.mongoLogger?.willLog(SeverityLevel.DEBUG, MongoLoggableComponent.COMMAND))
494494
) {
495495
this.emitAndLogCommand(
496496
this.monitorCommands,
@@ -513,7 +513,8 @@ export class Connection extends TypedEventEmitter<ConnectionEvents> {
513513
} catch (error) {
514514
if (
515515
this.monitorCommands ||
516-
(this.established && this.mongoLogger?.willLog(SeverityLevel.DEBUG, this.component))
516+
(this.established &&
517+
this.mongoLogger?.willLog(SeverityLevel.DEBUG, MongoLoggableComponent.COMMAND))
517518
) {
518519
if (error.name === 'MongoWriteConcernError') {
519520
this.emitAndLogCommand(

src/mongo_logger.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ function defaultLogTransform(
509509
return log;
510510
case SERVER_SELECTION_FAILED:
511511
log = attachServerSelectionFields(log, logObject, maxDocumentLength);
512-
log.failure = logObject.failure.message;
512+
log.failure = logObject.failure?.message;
513513
return log;
514514
case SERVER_SELECTION_SUCCEEDED:
515515
log = attachServerSelectionFields(log, logObject, maxDocumentLength);
@@ -536,7 +536,7 @@ function defaultLogTransform(
536536
log = attachCommandFields(log, logObject);
537537
log.message = 'Command failed';
538538
log.durationMS = logObject.duration;
539-
log.failure = logObject.failure.message ?? '(redacted)';
539+
log.failure = logObject.failure?.message ?? '(redacted)';
540540
return log;
541541
case CONNECTION_POOL_CREATED:
542542
log = attachConnectionFields(log, logObject);
@@ -666,7 +666,7 @@ function defaultLogTransform(
666666
log = attachServerHeartbeatFields(log, logObject);
667667
log.message = 'Server heartbeat failed';
668668
log.durationMS = logObject.duration;
669-
log.failure = logObject.failure.message;
669+
log.failure = logObject.failure?.message;
670670
return log;
671671
case TOPOLOGY_OPENING:
672672
log = attachSDAMFields(log, logObject);

test/unit/mongo_client.test.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -864,6 +864,26 @@ describe('MongoOptions', function () {
864864
});
865865
});
866866

867+
context('when option is not a valid MongoDBLogwritable stream', function () {
868+
it('should default to stderr', function () {
869+
const writable = {
870+
buffer: [],
871+
misNamedWrite(log) {
872+
this.buffer.push(log);
873+
}
874+
};
875+
const client = new MongoClient('mongodb://a/', {
876+
[loggerFeatureFlag]: true,
877+
mongodbLogPath: writable
878+
});
879+
const log = { t: new Date(), c: 'constructorInvalidOption', s: 'error' };
880+
client.options.mongoLoggerOptions.logDestination.write(log);
881+
expect(stderrStub.write).calledWith(
882+
inspect(log, { breakLength: Infinity, compact: true })
883+
);
884+
});
885+
});
886+
867887
context('when option is `stdout`', function () {
868888
it('it is accessible through mongoLogger.logDestination', function () {
869889
const client = new MongoClient('mongodb://a/', {

0 commit comments

Comments
 (0)