Skip to content

Commit e1d6879

Browse files
remove metadata and extended metadata
1 parent 869f625 commit e1d6879

File tree

13 files changed

+105
-145
lines changed

13 files changed

+105
-145
lines changed

src/cmap/connect.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ export async function prepareHandshakeDocument(
222222
const options = authContext.options;
223223
const compressors = options.compressors ? options.compressors : [];
224224
const { serverApi } = authContext.connection;
225-
const clientMetadata: Document = await options.extendedMetadata;
225+
const clientMetadata: Document = await options.metadata;
226226

227227
const handshakeDoc: HandshakeDocument = {
228228
[serverApi?.version || options.loadBalanced === true ? 'hello' : LEGACY_HELLO_COMMAND]: 1,

src/cmap/connection.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,8 @@ export interface ConnectionOptions
140140
noDelay?: boolean;
141141
socketTimeoutMS?: number;
142142
cancellationToken?: CancellationToken;
143-
metadata: ClientMetadata;
144143
/** @internal */
145-
extendedMetadata: Promise<Document>;
144+
metadata: Promise<ClientMetadata>;
146145
/** @internal */
147146
mongoLogger?: MongoLogger | undefined;
148147
}

src/cmap/connection_pool.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -610,17 +610,17 @@ export class ConnectionPool extends TypedEventEmitter<ConnectionPoolEvents> {
610610
}
611611

612612
private createConnection(callback: Callback<Connection>) {
613-
// Note that metadata and extendedMetadata may have changed on the client but have
614-
// been frozen here, so we pull the extendedMetadata promise always from the client
615-
// no mattter what options were set at the construction of the pool.
613+
// Note that metadata may have changed on the client but have
614+
// been frozen here, so we pull the metadata promise always from the client
615+
// no matter what options were set at the construction of the pool.
616616
const connectOptions: ConnectionOptions = {
617617
...this.options,
618618
id: this.connectionCounter.next().value,
619619
generation: this.generation,
620620
cancellationToken: this.cancellationToken,
621621
mongoLogger: this.mongoLogger,
622622
authProviders: this.server.topology.client.s.authProviders,
623-
extendedMetadata: this.server.topology.client.options.extendedMetadata
623+
metadata: this.server.topology.client.options.metadata
624624
};
625625

626626
this.pending++;

src/cmap/handshake/client_metadata.ts

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@ export function isDriverInfoEqual(info1: DriverInfo, info2: DriverInfo): boolean
2727
}
2828

2929
/**
30-
* @public
31-
* @deprecated This interface will be made internal in the next major release.
30+
* @internal
3231
* @see https://github.com/mongodb/specifications/blob/master/source/mongodb-handshake/handshake.md#hello-command
3332
*/
3433
export interface ClientMetadata {
@@ -116,10 +115,10 @@ type MakeClientMetadataOptions = Pick<MongoOptions, 'appName'>;
116115
* 3. Omit the `env` document entirely.
117116
* 4. Truncate `platform`. -- special we do not truncate this field
118117
*/
119-
export function makeClientMetadata(
118+
export async function makeClientMetadata(
120119
driverInfoList: DriverInfo[],
121120
{ appName = '' }: MakeClientMetadataOptions
122-
): ClientMetadata {
121+
): Promise<ClientMetadata> {
123122
const metadataDocument = new LimitedSizeDocument(512);
124123

125124
// Add app name first, it must be sent
@@ -191,7 +190,7 @@ export function makeClientMetadata(
191190
}
192191
}
193192
}
194-
return metadataDocument.toObject() as ClientMetadata;
193+
return await addContainerMetadata(metadataDocument.toObject() as ClientMetadata);
195194
}
196195

197196
let dockerPromise: Promise<boolean>;
@@ -215,9 +214,7 @@ async function getContainerMetadata() {
215214
* Re-add each metadata value.
216215
* Attempt to add new env container metadata, but keep old data if it does not fit.
217216
*/
218-
export async function addContainerMetadata(
219-
originalMetadata: ClientMetadata
220-
): Promise<ClientMetadata> {
217+
async function addContainerMetadata(originalMetadata: ClientMetadata): Promise<ClientMetadata> {
221218
const containerMetadata = await getContainerMetadata();
222219
if (Object.keys(containerMetadata).length === 0) return originalMetadata;
223220

src/mongo_client.ts

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import { AuthMechanism } from './cmap/auth/providers';
1616
import type { LEGAL_TCP_SOCKET_OPTIONS, LEGAL_TLS_SOCKET_OPTIONS } from './cmap/connect';
1717
import type { Connection } from './cmap/connection';
1818
import {
19-
addContainerMetadata,
2019
type ClientMetadata,
2120
isDriverInfoEqual,
2221
makeClientMetadata
@@ -410,26 +409,12 @@ export class MongoClient extends TypedEventEmitter<MongoClientEvents> implements
410409
public readonly options: Readonly<
411410
Omit<
412411
MongoOptions,
413-
| 'monitorCommands'
414-
| 'ca'
415-
| 'crl'
416-
| 'key'
417-
| 'cert'
418-
| 'driverInfo'
419-
| 'metadata'
420-
| 'extendedMetadata'
412+
'monitorCommands' | 'ca' | 'crl' | 'key' | 'cert' | 'driverInfo' | 'metadata'
421413
>
422414
> &
423415
Pick<
424416
MongoOptions,
425-
| 'monitorCommands'
426-
| 'ca'
427-
| 'crl'
428-
| 'key'
429-
| 'cert'
430-
| 'driverInfo'
431-
| 'metadata'
432-
| 'extendedMetadata'
417+
'monitorCommands' | 'ca' | 'crl' | 'key' | 'cert' | 'driverInfo' | 'metadata'
433418
>;
434419

435420
private driverInfoList: DriverInfo[] = [];
@@ -504,10 +489,9 @@ export class MongoClient extends TypedEventEmitter<MongoClientEvents> implements
504489
if (isDuplicateDriverInfo) return;
505490

506491
this.driverInfoList.push(driverInfo);
507-
this.options.metadata = makeClientMetadata(this.driverInfoList, this.options);
508-
this.options.extendedMetadata = addContainerMetadata(this.options.metadata)
492+
this.options.metadata = makeClientMetadata(this.driverInfoList, this.options)
509493
.then(undefined, squashError)
510-
.then(result => result ?? {}); // ensure Promise<Document>
494+
.then(result => result ?? ({} as ClientMetadata)); // ensure Promise<Document>
511495
}
512496

513497
/** @internal */
@@ -1103,10 +1087,8 @@ export interface MongoOptions
11031087
compressors: CompressorName[];
11041088
writeConcern: WriteConcern;
11051089
dbName: string;
1106-
/** @deprecated - Will be made internal in a future major release. */
1107-
metadata: ClientMetadata;
1108-
/** @deprecated - Will be made internal in a future major release. */
1109-
extendedMetadata: Promise<Document>;
1090+
/** @internal - Will be made internal in a future major release. */
1091+
metadata: Promise<ClientMetadata>;
11101092
/** @internal */
11111093
autoEncrypter?: AutoEncrypter;
11121094
/** @internal */

src/sdam/monitor.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { clearTimeout, setTimeout } from 'timers';
33
import { type Document, Long } from '../bson';
44
import { connect, makeConnection, makeSocket, performInitialHandshake } from '../cmap/connect';
55
import type { Connection, ConnectionOptions } from '../cmap/connection';
6-
import { getFAASEnv } from '../cmap/handshake/client_metadata';
6+
import { type ClientMetadata, getFAASEnv } from '../cmap/handshake/client_metadata';
77
import { LEGACY_HELLO_COMMAND } from '../constants';
88
import { MongoError, MongoErrorLabel, MongoNetworkTimeoutError } from '../error';
99
import { MongoLoggableComponent } from '../mongo_logger';

src/sdam/topology.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,7 @@ export interface TopologyOptions extends BSONSerializeOptions, ServerOptions {
150150
/** Indicates that a client should directly connect to a node without attempting to discover its topology type */
151151
directConnection: boolean;
152152
loadBalanced: boolean;
153-
metadata: ClientMetadata;
154-
extendedMetadata: Promise<Document>;
153+
metadata: Promise<ClientMetadata>;
155154
serverMonitoringMode: ServerMonitoringMode;
156155
/** MongoDB server API version */
157156
serverApi?: ServerApi;
@@ -754,10 +753,6 @@ export class Topology extends TypedEventEmitter<TopologyEvents> {
754753
if (typeof callback === 'function') callback(undefined, true);
755754
}
756755

757-
get clientMetadata(): ClientMetadata {
758-
return this.s.options.metadata;
759-
}
760-
761756
isConnected(): boolean {
762757
return this.s.state === STATE_CONNECTED;
763758
}

test/integration/connection-monitoring-and-pooling/connection.test.ts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,7 @@ import {
1515
} from '../../../src';
1616
import { connect } from '../../../src/cmap/connect';
1717
import { Connection } from '../../../src/cmap/connection';
18-
import {
19-
addContainerMetadata,
20-
makeClientMetadata
21-
} from '../../../src/cmap/handshake/client_metadata';
18+
import { makeClientMetadata } from '../../../src/cmap/handshake/client_metadata';
2219
import { MongoDBResponse } from '../../../src/cmap/wire_protocol/responses';
2320
import { LEGACY_HELLO_COMMAND } from '../../../src/constants';
2421
import { Topology } from '../../../src/sdam/topology';
@@ -51,8 +48,7 @@ describe('Connection', function () {
5148
...commonConnectOptions,
5249
connectionType: Connection,
5350
...this.configuration.options,
54-
metadata: makeClientMetadata([], {}),
55-
extendedMetadata: addContainerMetadata(makeClientMetadata([], {}))
51+
metadata: makeClientMetadata([], {})
5652
};
5753

5854
let conn;
@@ -74,8 +70,7 @@ describe('Connection', function () {
7470
connectionType: Connection,
7571
...this.configuration.options,
7672
monitorCommands: true,
77-
metadata: makeClientMetadata([], {}),
78-
extendedMetadata: addContainerMetadata(makeClientMetadata([], {}))
73+
metadata: makeClientMetadata([], {})
7974
};
8075

8176
let conn;
@@ -106,8 +101,7 @@ describe('Connection', function () {
106101
connectionType: Connection,
107102
...this.configuration.options,
108103
monitorCommands: true,
109-
metadata: makeClientMetadata([], {}),
110-
extendedMetadata: addContainerMetadata(makeClientMetadata([], {}))
104+
metadata: makeClientMetadata([], {})
111105
};
112106

113107
let conn;

test/integration/mongodb-handshake/mongodb-handshake.prose.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,8 @@ describe('Handshake Prose Tests', function () {
149149
it('includes both container and FAAS provider information in the client metadata', async function () {
150150
client = this.configuration.newClient();
151151
await client.connect();
152-
expect(client.topology?.s.options.extendedMetadata).to.exist;
153-
const { env } = await client.topology.s.options.extendedMetadata;
152+
expect(client.topology?.s.options.metadata).to.exist;
153+
const { env } = await client.topology.s.options.metadata;
154154

155155
expect(env).to.deep.equal({
156156
region: 'us-east-2',

test/tools/cmap_spec_runner.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ export class ThreadContext {
323323
serverApi: process.env.MONGODB_API_VERSION
324324
? { version: process.env.MONGODB_API_VERSION }
325325
: undefined,
326-
extendedMetadata: this.#server.topology.client.options.extendedMetadata
326+
metadata: this.#server.topology.client.options.metadata
327327
});
328328
this.#originalServerPool = this.#server.pool;
329329
this.#server.pool = this.pool;

0 commit comments

Comments
 (0)