Skip to content

Commit d3e9b8b

Browse files
remove metadata and extended metadata
1 parent 96b20c7 commit d3e9b8b

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
socketTimeoutMS?: number;
141141
/** @internal */
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
@@ -601,17 +601,17 @@ export class ConnectionPool extends TypedEventEmitter<ConnectionPoolEvents> {
601601
}
602602

603603
private createConnection(callback: Callback<Connection>) {
604-
// Note that metadata and extendedMetadata may have changed on the client but have
605-
// been frozen here, so we pull the extendedMetadata promise always from the client
606-
// no mattter what options were set at the construction of the pool.
604+
// Note that metadata may have changed on the client but have
605+
// been frozen here, so we pull the metadata promise always from the client
606+
// no matter what options were set at the construction of the pool.
607607
const connectOptions: ConnectionOptions = {
608608
...this.options,
609609
id: this.connectionCounter.next().value,
610610
generation: this.generation,
611611
cancellationToken: this.cancellationToken,
612612
mongoLogger: this.mongoLogger,
613613
authProviders: this.server.topology.client.s.authProviders,
614-
extendedMetadata: this.server.topology.client.options.extendedMetadata
614+
metadata: this.server.topology.client.options.metadata
615615
};
616616

617617
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 {
@@ -103,10 +102,10 @@ type MakeClientMetadataOptions = Pick<MongoOptions, 'appName'>;
103102
* 3. Omit the `env` document entirely.
104103
* 4. Truncate `platform`. -- special we do not truncate this field
105104
*/
106-
export function makeClientMetadata(
105+
export async function makeClientMetadata(
107106
driverInfoList: DriverInfo[],
108107
{ appName = '' }: MakeClientMetadataOptions
109-
): ClientMetadata {
108+
): Promise<ClientMetadata> {
110109
const metadataDocument = new LimitedSizeDocument(512);
111110

112111
// Add app name first, it must be sent
@@ -178,7 +177,7 @@ export function makeClientMetadata(
178177
}
179178
}
180179
}
181-
return metadataDocument.toObject() as ClientMetadata;
180+
return await addContainerMetadata(metadataDocument.toObject() as ClientMetadata);
182181
}
183182

184183
let dockerPromise: Promise<boolean>;
@@ -202,9 +201,7 @@ async function getContainerMetadata() {
202201
* Re-add each metadata value.
203202
* Attempt to add new env container metadata, but keep old data if it does not fit.
204203
*/
205-
export async function addContainerMetadata(
206-
originalMetadata: ClientMetadata
207-
): Promise<ClientMetadata> {
204+
async function addContainerMetadata(originalMetadata: ClientMetadata): Promise<ClientMetadata> {
208205
const containerMetadata = await getContainerMetadata();
209206
if (Object.keys(containerMetadata).length === 0) return originalMetadata;
210207

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;
@@ -750,10 +749,6 @@ export class Topology extends TypedEventEmitter<TopologyEvents> {
750749
if (typeof callback === 'function') callback(undefined, true);
751750
}
752751

753-
get clientMetadata(): ClientMetadata {
754-
return this.s.options.metadata;
755-
}
756-
757752
isConnected(): boolean {
758753
return this.s.state === STATE_CONNECTED;
759754
}

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)