@mongosh/service-provider-node-driver 3.12.0 → 3.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/compass/compass-service-provider.d.ts +2 -2
- package/lib/compass/compass-service-provider.js +2 -2
- package/lib/compass/compass-service-provider.js.map +1 -1
- package/lib/node-driver-service-provider.d.ts +5 -10
- package/lib/node-driver-service-provider.js +33 -33
- package/lib/node-driver-service-provider.js.map +1 -1
- package/package.json +10 -10
- package/src/compass/compass-service-provider.ts +4 -3
- package/src/node-driver-provider.integration.spec.ts +4 -10
- package/src/node-driver-service-provider.spec.ts +1 -0
- package/src/node-driver-service-provider.ts +74 -60
- package/lib/mongodb-patches.d.ts +0 -4
- package/lib/mongodb-patches.js +0 -17
- package/lib/mongodb-patches.js.map +0 -1
- package/src/mongodb-patches.spec.ts +0 -67
- package/src/mongodb-patches.ts +0 -25
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { DevtoolsConnectOptions } from '../node-driver-service-provider';
|
|
2
2
|
import { NodeDriverServiceProvider } from '../node-driver-service-provider';
|
|
3
|
-
import type { MongoClient } from 'mongodb';
|
|
3
|
+
import type { MongoClient, TopologyDescription } from 'mongodb';
|
|
4
4
|
import type { ReplPlatform } from '@mongosh/service-provider-core';
|
|
5
5
|
import type ConnectionString from 'mongodb-connection-string-url';
|
|
6
6
|
import type { EventEmitter } from 'events';
|
|
7
7
|
export declare class CompassServiceProvider extends NodeDriverServiceProvider {
|
|
8
8
|
readonly platform: ReplPlatform;
|
|
9
|
-
constructor(mongoClient: MongoClient, bus: EventEmitter, driverOptions: DevtoolsConnectOptions, uri?: ConnectionString);
|
|
9
|
+
constructor(mongoClient: MongoClient, bus: EventEmitter, driverOptions: DevtoolsConnectOptions, uri?: ConnectionString, lastSeenTopology?: TopologyDescription);
|
|
10
10
|
}
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CompassServiceProvider = void 0;
|
|
4
4
|
const node_driver_service_provider_1 = require("../node-driver-service-provider");
|
|
5
5
|
class CompassServiceProvider extends node_driver_service_provider_1.NodeDriverServiceProvider {
|
|
6
|
-
constructor(mongoClient, bus, driverOptions, uri) {
|
|
7
|
-
super(mongoClient, bus, driverOptions, uri);
|
|
6
|
+
constructor(mongoClient, bus, driverOptions, uri, lastSeenTopology) {
|
|
7
|
+
super(mongoClient, bus, driverOptions, uri, lastSeenTopology);
|
|
8
8
|
this.platform = 'Compass';
|
|
9
9
|
}
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compass-service-provider.js","sourceRoot":"","sources":["../../src/compass/compass-service-provider.ts"],"names":[],"mappings":";;;AACA,kFAA4E;AAS5E,MAAa,sBAAuB,SAAQ,wDAAyB;IAUnE,YACE,WAAwB,EACxB,GAAiB,EACjB,aAAqC,EACrC,GAAsB;
|
|
1
|
+
{"version":3,"file":"compass-service-provider.js","sourceRoot":"","sources":["../../src/compass/compass-service-provider.ts"],"names":[],"mappings":";;;AACA,kFAA4E;AAS5E,MAAa,sBAAuB,SAAQ,wDAAyB;IAUnE,YACE,WAAwB,EACxB,GAAiB,EACjB,aAAqC,EACrC,GAAsB,EACtB,gBAAsC;QAEtC,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,gBAAgB,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC5B,CAAC;CACF;AApBD,wDAoBC"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ReadPreferenceFromOptions, ReadPreferenceLike, OperationOptions, RunCommandCursor, RunCursorCommandOptions, ClientEncryptionOptions, MongoClient, MongoMissingDependencyError, SearchIndexDescription, TopologyDescription } from 'mongodb';
|
|
2
2
|
import type { ServiceProvider, ReplPlatform, ShellAuthOptions, AggregateOptions, AggregationCursor, AnyBulkWriteOperation, AnyClientBulkWriteModel, BulkWriteOptions, BulkWriteResult, ClientBulkWriteResult, ClientBulkWriteOptions, ClientSessionOptions, Collection, CountDocumentsOptions, CountOptions, CreateCollectionOptions, CreateIndexesOptions, FindCursor, Db, DbOptions, DeleteOptions, DeleteResult, DistinctOptions, Document, DropCollectionOptions, DropDatabaseOptions, EstimatedDocumentCountOptions, FindOneAndDeleteOptions, FindOneAndReplaceOptions, FindOneAndUpdateOptions, FindOptions, IndexDescription, InsertManyResult, InsertOneOptions, InsertOneResult, ListCollectionsOptions, ListDatabasesOptions, ListIndexesOptions, MongoClientOptions, ReadConcern, RenameOptions, ReplaceOptions, RunCommandOptions, ClientSession, UpdateOptions, UpdateResult, WriteConcern, ChangeStreamOptions, ChangeStream, AutoEncryptionOptions, ClientEncryption as MongoCryptClientEncryption, ConnectionInfo } from '@mongosh/service-provider-core';
|
|
3
3
|
import { ServiceProviderCore } from '@mongosh/service-provider-core';
|
|
4
4
|
import type { DevtoolsConnectOptions } from '@mongodb-js/devtools-connect';
|
|
5
5
|
import type { MongoshBus } from '@mongosh/types';
|
|
6
6
|
import { ConnectionString } from 'mongodb-connection-string-url';
|
|
7
7
|
import type { CreateEncryptedCollectionOptions } from '@mongosh/service-provider-core';
|
|
8
|
-
import type { DevtoolsConnectionState } from '@mongodb-js/devtools-connect';
|
|
9
8
|
import { ReadPreference } from 'mongodb';
|
|
10
9
|
export type DropDatabaseResult = {
|
|
11
10
|
ok: 0 | 1;
|
|
@@ -32,11 +31,8 @@ export declare class NodeDriverServiceProvider extends ServiceProviderCore imple
|
|
|
32
31
|
private _lastSeenTopology;
|
|
33
32
|
constructor(mongoClient: MongoClient, bus: MongoshBus, clientOptions: DevtoolsConnectOptions, uri?: ConnectionString, lastSeenTopology?: TopologyDescription);
|
|
34
33
|
static getVersionInformation(): DependencyVersionInfo;
|
|
35
|
-
maybeThrowBetterMissingOptionalDependencyError(err: MongoMissingDependencyError): never;
|
|
36
|
-
|
|
37
|
-
client: MongoClient;
|
|
38
|
-
state: DevtoolsConnectionState;
|
|
39
|
-
}>;
|
|
34
|
+
static maybeThrowBetterMissingOptionalDependencyError(err: MongoMissingDependencyError): never;
|
|
35
|
+
private static connectMongoClient;
|
|
40
36
|
getNewConnection(uri: string, options?: Partial<DevtoolsConnectOptions>): Promise<NodeDriverServiceProvider>;
|
|
41
37
|
_getHostnameForConnection(topology?: TopologyDescription): string | undefined;
|
|
42
38
|
getConnectionInfo(): Promise<ConnectionInfo>;
|
|
@@ -48,7 +44,7 @@ export declare class NodeDriverServiceProvider extends ServiceProviderCore imple
|
|
|
48
44
|
aggregateDb(database: string, pipeline?: Document[], options?: AggregateOptions, dbOptions?: DbOptions): AggregationCursor;
|
|
49
45
|
bulkWrite(database: string, collection: string, requests: AnyBulkWriteOperation[], options?: BulkWriteOptions, dbOptions?: DbOptions): Promise<BulkWriteResult>;
|
|
50
46
|
clientBulkWrite(models: AnyClientBulkWriteModel<Document>[], options?: ClientBulkWriteOptions): Promise<ClientBulkWriteResult>;
|
|
51
|
-
close(
|
|
47
|
+
close(): Promise<void>;
|
|
52
48
|
suspend(): Promise<() => Promise<void>>;
|
|
53
49
|
count(database: string, collection: string, query?: Document, options?: CountOptions, dbOptions?: DbOptions): Promise<number>;
|
|
54
50
|
countDocuments(database: string, collection: string, filter?: Document, options?: CountDocumentsOptions, dbOptions?: DbOptions): Promise<number>;
|
|
@@ -69,7 +65,7 @@ export declare class NodeDriverServiceProvider extends ServiceProviderCore imple
|
|
|
69
65
|
listDatabases(database: string, options?: ListDatabasesOptions): Promise<Document>;
|
|
70
66
|
updateMany(database: string, collection: string, filter?: Document, update?: Document, options?: UpdateOptions, dbOptions?: DbOptions): Promise<UpdateResult>;
|
|
71
67
|
updateOne(database: string, collection: string, filter?: Document, update?: Document, options?: UpdateOptions, dbOptions?: DbOptions): Promise<UpdateResult>;
|
|
72
|
-
|
|
68
|
+
getTopologyDescription(): TopologyDescription | undefined;
|
|
73
69
|
dropDatabase(db: string, options?: DropDatabaseOptions, dbOptions?: DbOptions): Promise<DropDatabaseResult>;
|
|
74
70
|
createIndexes(database: string, collection: string, indexSpecs: IndexDescription[], options?: CreateIndexesOptions, dbOptions?: DbOptions): Promise<string[]>;
|
|
75
71
|
getIndexes(database: string, collection: string, options?: ListIndexesOptions, dbOptions?: DbOptions): Promise<Document[]>;
|
|
@@ -93,7 +89,6 @@ export declare class NodeDriverServiceProvider extends ServiceProviderCore imple
|
|
|
93
89
|
resetConnectionOptions(options: MongoClientOptions): Promise<void>;
|
|
94
90
|
startSession(options: ClientSessionOptions): ClientSession;
|
|
95
91
|
watch(pipeline: Document[], options: ChangeStreamOptions, dbOptions?: DbOptions, db?: string, coll?: string): ChangeStream<Document>;
|
|
96
|
-
get driverMetadata(): ClientMetadata | undefined;
|
|
97
92
|
getRawClient(): MongoClient;
|
|
98
93
|
getURI(): string | undefined;
|
|
99
94
|
getFleOptions(): AutoEncryptionOptions | undefined;
|
|
@@ -36,7 +36,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.NodeDriverServiceProvider = void 0;
|
|
37
37
|
const service_provider_core_1 = require("@mongosh/service-provider-core");
|
|
38
38
|
const errors_1 = require("@mongosh/errors");
|
|
39
|
-
const mongodb_patches_1 = require("./mongodb-patches");
|
|
40
39
|
const mongodb_connection_string_url_1 = require("mongodb-connection-string-url");
|
|
41
40
|
const events_1 = require("events");
|
|
42
41
|
const util_1 = require("util");
|
|
@@ -63,7 +62,9 @@ const bsonlib = () => {
|
|
|
63
62
|
BSONRegExp,
|
|
64
63
|
};
|
|
65
64
|
};
|
|
66
|
-
const DEFAULT_DRIVER_OPTIONS = Object.freeze({
|
|
65
|
+
const DEFAULT_DRIVER_OPTIONS = Object.freeze({
|
|
66
|
+
__skipPingOnConnect: false,
|
|
67
|
+
});
|
|
67
68
|
const DEFAULT_BASE_OPTIONS = Object.freeze({
|
|
68
69
|
serializeFunctions: true,
|
|
69
70
|
promoteLongs: false,
|
|
@@ -99,14 +100,6 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
|
|
|
99
100
|
let client;
|
|
100
101
|
let state;
|
|
101
102
|
let lastSeenTopology;
|
|
102
|
-
class MongoshMongoClient extends mongodb_1.MongoClient {
|
|
103
|
-
constructor(url, options) {
|
|
104
|
-
super(url, options);
|
|
105
|
-
this.on('topologyDescriptionChanged', (evt) => {
|
|
106
|
-
lastSeenTopology = evt.newDescription;
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
103
|
if (cliOptions.nodb) {
|
|
111
104
|
const clientOptionsCopy = {
|
|
112
105
|
...clientOptions,
|
|
@@ -118,15 +111,16 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
|
|
|
118
111
|
delete clientOptionsCopy.parentState;
|
|
119
112
|
delete clientOptionsCopy.proxy;
|
|
120
113
|
delete clientOptionsCopy.applyProxyToOIDC;
|
|
121
|
-
client = new
|
|
114
|
+
client = new mongodb_1.MongoClient(connectionString.toString(), clientOptionsCopy);
|
|
122
115
|
}
|
|
123
116
|
else {
|
|
124
|
-
({ client, state } = await
|
|
117
|
+
({ client, state, lastSeenTopology } = await this.connectMongoClient(connectionString.toString(), clientOptions, bus));
|
|
125
118
|
}
|
|
126
119
|
clientOptions.parentState = state;
|
|
127
120
|
return new this(client, bus, clientOptions, connectionString, lastSeenTopology);
|
|
128
121
|
}
|
|
129
122
|
constructor(mongoClient, bus, clientOptions, uri, lastSeenTopology) {
|
|
123
|
+
var _a, _b;
|
|
130
124
|
super(bsonlib());
|
|
131
125
|
this.bus = bus;
|
|
132
126
|
this.mongoClient = mongoClient;
|
|
@@ -134,7 +128,7 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
|
|
|
134
128
|
this._lastSeenTopology = lastSeenTopology;
|
|
135
129
|
this.platform = 'CLI';
|
|
136
130
|
try {
|
|
137
|
-
this.initialDb = mongoClient.
|
|
131
|
+
this.initialDb = mongoClient.options.dbName || service_provider_core_1.DEFAULT_DB;
|
|
138
132
|
}
|
|
139
133
|
catch (err) {
|
|
140
134
|
this.initialDb = service_provider_core_1.DEFAULT_DB;
|
|
@@ -142,6 +136,9 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
|
|
|
142
136
|
this.currentClientOptions = clientOptions;
|
|
143
137
|
this.baseCmdOptions = { ...DEFAULT_BASE_OPTIONS };
|
|
144
138
|
this.dbcache = new WeakMap();
|
|
139
|
+
(_b = (_a = this.mongoClient).on) === null || _b === void 0 ? void 0 : _b.call(_a, 'topologyDescriptionChanged', (evt) => {
|
|
140
|
+
this._lastSeenTopology = evt.newDescription;
|
|
141
|
+
});
|
|
145
142
|
}
|
|
146
143
|
static getVersionInformation() {
|
|
147
144
|
function tryCall(fn) {
|
|
@@ -159,7 +156,7 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
|
|
|
159
156
|
kerberosVersion: tryCall(() => require('kerberos/package.json').version),
|
|
160
157
|
};
|
|
161
158
|
}
|
|
162
|
-
maybeThrowBetterMissingOptionalDependencyError(err) {
|
|
159
|
+
static maybeThrowBetterMissingOptionalDependencyError(err) {
|
|
163
160
|
if (err.message.includes('kerberos')) {
|
|
164
161
|
try {
|
|
165
162
|
require('kerberos');
|
|
@@ -193,9 +190,19 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
|
|
|
193
190
|
}
|
|
194
191
|
throw err;
|
|
195
192
|
}
|
|
196
|
-
async connectMongoClient(connectionString, clientOptions) {
|
|
193
|
+
static async connectMongoClient(connectionString, clientOptions, bus) {
|
|
194
|
+
let lastSeenTopology;
|
|
195
|
+
class MongoshMongoClient extends mongodb_1.MongoClient {
|
|
196
|
+
constructor(url, options) {
|
|
197
|
+
super(url, options);
|
|
198
|
+
this.on('topologyDescriptionChanged', (evt) => {
|
|
199
|
+
lastSeenTopology = evt.newDescription;
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
}
|
|
197
203
|
try {
|
|
198
|
-
|
|
204
|
+
const result = await (0, devtools_connect_1.connectMongoClient)(connectionString.toString(), clientOptions, bus, MongoshMongoClient);
|
|
205
|
+
return { ...result, lastSeenTopology };
|
|
199
206
|
}
|
|
200
207
|
catch (err) {
|
|
201
208
|
if (typeof err === 'object' &&
|
|
@@ -210,9 +217,9 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
|
|
|
210
217
|
async getNewConnection(uri, options = {}) {
|
|
211
218
|
const connectionString = new mongodb_connection_string_url_1.ConnectionString(uri);
|
|
212
219
|
const clientOptions = this.processDriverOptions(connectionString, options);
|
|
213
|
-
const { client, state } = await
|
|
220
|
+
const { client, state, lastSeenTopology } = await NodeDriverServiceProvider.connectMongoClient(connectionString.toString(), clientOptions, this.bus);
|
|
214
221
|
clientOptions.parentState = state;
|
|
215
|
-
return new NodeDriverServiceProvider(client, this.bus, clientOptions, connectionString, this._lastSeenTopology);
|
|
222
|
+
return new NodeDriverServiceProvider(client, this.bus, clientOptions, connectionString, lastSeenTopology !== null && lastSeenTopology !== void 0 ? lastSeenTopology : this._lastSeenTopology);
|
|
216
223
|
}
|
|
217
224
|
_getHostnameForConnection(topology) {
|
|
218
225
|
var _a, _b;
|
|
@@ -292,17 +299,12 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
|
|
|
292
299
|
options = { ...this.baseCmdOptions, ...options };
|
|
293
300
|
return this.mongoClient.bulkWrite(models, options);
|
|
294
301
|
}
|
|
295
|
-
async close(
|
|
302
|
+
async close() {
|
|
296
303
|
this.dbcache.set(this.mongoClient, new Map());
|
|
297
|
-
|
|
298
|
-
await (0, mongodb_patches_1.forceCloseMongoClient)(this.mongoClient);
|
|
299
|
-
}
|
|
300
|
-
else {
|
|
301
|
-
await this.mongoClient.close();
|
|
302
|
-
}
|
|
304
|
+
await this.mongoClient.close();
|
|
303
305
|
}
|
|
304
306
|
async suspend() {
|
|
305
|
-
await this.close(
|
|
307
|
+
await this.close();
|
|
306
308
|
return async () => {
|
|
307
309
|
await this.resetConnectionOptions({});
|
|
308
310
|
};
|
|
@@ -434,8 +436,8 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
|
|
|
434
436
|
.collection(collection)
|
|
435
437
|
.updateOne(filter, update, options);
|
|
436
438
|
}
|
|
437
|
-
|
|
438
|
-
return this.
|
|
439
|
+
getTopologyDescription() {
|
|
440
|
+
return this._lastSeenTopology;
|
|
439
441
|
}
|
|
440
442
|
async dropDatabase(db, options = {}, dbOptions = {}) {
|
|
441
443
|
const opts = { ...this.baseCmdOptions, ...options };
|
|
@@ -517,13 +519,15 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
|
|
|
517
519
|
...options,
|
|
518
520
|
};
|
|
519
521
|
const clientOptions = this.processDriverOptions(this.uri, this.currentClientOptions);
|
|
520
|
-
const { client, state } = await
|
|
522
|
+
const { client, state, lastSeenTopology } = await NodeDriverServiceProvider.connectMongoClient(this.uri.toString(), clientOptions, this.bus);
|
|
521
523
|
try {
|
|
522
524
|
await this.mongoClient.close();
|
|
523
525
|
}
|
|
524
526
|
catch (_a) { }
|
|
525
527
|
this.mongoClient = client;
|
|
526
528
|
this.currentClientOptions.parentState = state;
|
|
529
|
+
if (lastSeenTopology)
|
|
530
|
+
this._lastSeenTopology = lastSeenTopology;
|
|
527
531
|
}
|
|
528
532
|
startSession(options) {
|
|
529
533
|
return this.mongoClient.startSession(options);
|
|
@@ -540,10 +544,6 @@ class NodeDriverServiceProvider extends service_provider_core_1.ServiceProviderC
|
|
|
540
544
|
}
|
|
541
545
|
throw new errors_1.MongoshInternalError('Cannot call watch with defined collection but undefined db');
|
|
542
546
|
}
|
|
543
|
-
get driverMetadata() {
|
|
544
|
-
var _a;
|
|
545
|
-
return (_a = this.getTopology()) === null || _a === void 0 ? void 0 : _a.clientMetadata;
|
|
546
|
-
}
|
|
547
547
|
getRawClient() {
|
|
548
548
|
return this.mongoClient;
|
|
549
549
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-driver-service-provider.js","sourceRoot":"","sources":["../src/node-driver-service-provider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"node-driver-service-provider.js","sourceRoot":"","sources":["../src/node-driver-service-provider.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mongosh/service-provider-node-driver",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.16.0",
|
|
4
4
|
"description": "MongoDB Shell Server Service Provider Package",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -47,21 +47,21 @@
|
|
|
47
47
|
}
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@mongodb-js/devtools-connect": "^3.4
|
|
51
|
-
"@mongodb-js/oidc-plugin": "^
|
|
52
|
-
"@mongosh/errors": "2.4.
|
|
53
|
-
"@mongosh/service-provider-core": "3.
|
|
54
|
-
"@mongosh/types": "3.
|
|
50
|
+
"@mongodb-js/devtools-connect": "^3.9.4",
|
|
51
|
+
"@mongodb-js/oidc-plugin": "^2.0.3",
|
|
52
|
+
"@mongosh/errors": "2.4.4",
|
|
53
|
+
"@mongosh/service-provider-core": "3.5.0",
|
|
54
|
+
"@mongosh/types": "^3.14.0",
|
|
55
55
|
"aws4": "^1.12.0",
|
|
56
56
|
"kerberos": "2.1.0",
|
|
57
|
-
"mongodb": "^6.
|
|
58
|
-
"mongodb-client-encryption": "^6.
|
|
57
|
+
"mongodb": "^6.19.0",
|
|
58
|
+
"mongodb-client-encryption": "^6.5.0",
|
|
59
59
|
"mongodb-connection-string-url": "^3.0.1",
|
|
60
60
|
"socks": "^2.8.3"
|
|
61
61
|
},
|
|
62
62
|
"optionalDependencies": {
|
|
63
63
|
"kerberos": "2.1.0",
|
|
64
|
-
"mongodb-client-encryption": "^6.
|
|
64
|
+
"mongodb-client-encryption": "^6.5.0"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
67
|
"@mongodb-js/eslint-config-mongosh": "^1.0.0",
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
"eslint": "^7.25.0",
|
|
73
73
|
"prettier": "^2.8.8"
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "e019a30c3021026ff8db296171d7d7f68cdac05e"
|
|
76
76
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { DevtoolsConnectOptions } from '../node-driver-service-provider';
|
|
2
2
|
import { NodeDriverServiceProvider } from '../node-driver-service-provider';
|
|
3
|
-
import type { MongoClient } from 'mongodb';
|
|
3
|
+
import type { MongoClient, TopologyDescription } from 'mongodb';
|
|
4
4
|
import type { ReplPlatform } from '@mongosh/service-provider-core';
|
|
5
5
|
import type ConnectionString from 'mongodb-connection-string-url';
|
|
6
6
|
import type { EventEmitter } from 'events';
|
|
@@ -22,9 +22,10 @@ export class CompassServiceProvider extends NodeDriverServiceProvider {
|
|
|
22
22
|
mongoClient: MongoClient,
|
|
23
23
|
bus: EventEmitter,
|
|
24
24
|
driverOptions: DevtoolsConnectOptions,
|
|
25
|
-
uri?: ConnectionString
|
|
25
|
+
uri?: ConnectionString,
|
|
26
|
+
lastSeenTopology?: TopologyDescription
|
|
26
27
|
) {
|
|
27
|
-
super(mongoClient, bus, driverOptions, uri);
|
|
28
|
+
super(mongoClient, bus, driverOptions, uri, lastSeenTopology);
|
|
28
29
|
this.platform = 'Compass';
|
|
29
30
|
}
|
|
30
31
|
}
|
|
@@ -55,7 +55,7 @@ describe('NodeDriverServiceProvider [integration]', function () {
|
|
|
55
55
|
});
|
|
56
56
|
|
|
57
57
|
afterEach(async function () {
|
|
58
|
-
await serviceProvider.close(
|
|
58
|
+
await serviceProvider.close();
|
|
59
59
|
});
|
|
60
60
|
|
|
61
61
|
describe('.connect', function () {
|
|
@@ -70,7 +70,7 @@ describe('NodeDriverServiceProvider [integration]', function () {
|
|
|
70
70
|
});
|
|
71
71
|
|
|
72
72
|
afterEach(async function () {
|
|
73
|
-
await instance.close(
|
|
73
|
+
await instance.close();
|
|
74
74
|
});
|
|
75
75
|
|
|
76
76
|
it('returns a NodeDriverServiceProvider', function () {
|
|
@@ -86,7 +86,7 @@ describe('NodeDriverServiceProvider [integration]', function () {
|
|
|
86
86
|
});
|
|
87
87
|
|
|
88
88
|
afterEach(async function () {
|
|
89
|
-
await instance.close(
|
|
89
|
+
await instance.close();
|
|
90
90
|
});
|
|
91
91
|
|
|
92
92
|
it('returns a NodeDriverServiceProvider', function () {
|
|
@@ -807,12 +807,6 @@ describe('NodeDriverServiceProvider [integration]', function () {
|
|
|
807
807
|
});
|
|
808
808
|
});
|
|
809
809
|
|
|
810
|
-
describe('#driverMetadata', function () {
|
|
811
|
-
it('returns information about the driver instance', function () {
|
|
812
|
-
expect(serviceProvider.driverMetadata?.driver.name).to.equal('nodejs');
|
|
813
|
-
});
|
|
814
|
-
});
|
|
815
|
-
|
|
816
810
|
describe('#getURI', function () {
|
|
817
811
|
it('returns the current URI', function () {
|
|
818
812
|
expect(serviceProvider.getURI()).to.equal(connectionString);
|
|
@@ -823,7 +817,7 @@ describe('NodeDriverServiceProvider [integration]', function () {
|
|
|
823
817
|
let instance: NodeDriverServiceProvider;
|
|
824
818
|
|
|
825
819
|
afterEach(async function () {
|
|
826
|
-
await instance?.close(
|
|
820
|
+
await instance?.close();
|
|
827
821
|
});
|
|
828
822
|
|
|
829
823
|
it('.connect() returns a CompassServiceProvider instance', async function () {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
Auth,
|
|
3
3
|
AuthMechanism,
|
|
4
|
-
ClientMetadata,
|
|
5
4
|
ReadPreferenceFromOptions,
|
|
6
5
|
ReadPreferenceLike,
|
|
7
6
|
OperationOptions,
|
|
@@ -79,7 +78,6 @@ import {
|
|
|
79
78
|
import type { DevtoolsConnectOptions } from '@mongodb-js/devtools-connect';
|
|
80
79
|
import { MongoshCommandFailed, MongoshInternalError } from '@mongosh/errors';
|
|
81
80
|
import type { MongoshBus } from '@mongosh/types';
|
|
82
|
-
import { forceCloseMongoClient } from './mongodb-patches';
|
|
83
81
|
import {
|
|
84
82
|
ConnectionString,
|
|
85
83
|
CommaAndColonSeparatedRecord,
|
|
@@ -140,7 +138,17 @@ export type DropDatabaseResult = {
|
|
|
140
138
|
/**
|
|
141
139
|
* Default driver options we always use.
|
|
142
140
|
*/
|
|
143
|
-
const DEFAULT_DRIVER_OPTIONS: MongoClientOptions = Object.freeze({
|
|
141
|
+
const DEFAULT_DRIVER_OPTIONS: MongoClientOptions = Object.freeze({
|
|
142
|
+
// In COMPASS-9455 / https://github.com/mongodb-js/devtools-shared/pull/557,
|
|
143
|
+
// we turned on the driver-internal `__skipPingOnConnect` option on by default
|
|
144
|
+
// for devtools-connect usage, turning off an extra `ping` rountrip when auth
|
|
145
|
+
// options have been provided. In mongosh, we do require this ping check,
|
|
146
|
+
// because we only print a warning rather than throwing an exception
|
|
147
|
+
// if a follow-up ping fails (e.g. in load-balanced mode). So setting this
|
|
148
|
+
// flag to `false` here restores mongosh's existing behavior, and we can
|
|
149
|
+
// revisit this in the next major version of mongosh.
|
|
150
|
+
__skipPingOnConnect: false,
|
|
151
|
+
} as MongoClientOptions);
|
|
144
152
|
|
|
145
153
|
/**
|
|
146
154
|
* Default driver method options we always use.
|
|
@@ -233,18 +241,6 @@ export class NodeDriverServiceProvider
|
|
|
233
241
|
let state: DevtoolsConnectionState | undefined;
|
|
234
242
|
let lastSeenTopology: TopologyDescription | undefined;
|
|
235
243
|
|
|
236
|
-
class MongoshMongoClient extends MongoClientCtor {
|
|
237
|
-
constructor(url: string, options?: MongoClientOptions) {
|
|
238
|
-
super(url, options);
|
|
239
|
-
this.on(
|
|
240
|
-
'topologyDescriptionChanged',
|
|
241
|
-
(evt: TopologyDescriptionChangedEvent) => {
|
|
242
|
-
lastSeenTopology = evt.newDescription;
|
|
243
|
-
}
|
|
244
|
-
);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
|
|
248
244
|
if (cliOptions.nodb) {
|
|
249
245
|
const clientOptionsCopy: MongoClientOptions &
|
|
250
246
|
Partial<DevtoolsConnectOptions> = {
|
|
@@ -257,16 +253,15 @@ export class NodeDriverServiceProvider
|
|
|
257
253
|
delete clientOptionsCopy.parentState;
|
|
258
254
|
delete clientOptionsCopy.proxy;
|
|
259
255
|
delete clientOptionsCopy.applyProxyToOIDC;
|
|
260
|
-
client = new
|
|
256
|
+
client = new MongoClientCtor(
|
|
261
257
|
connectionString.toString(),
|
|
262
258
|
clientOptionsCopy
|
|
263
259
|
);
|
|
264
260
|
} else {
|
|
265
|
-
({ client, state } = await connectMongoClient(
|
|
261
|
+
({ client, state, lastSeenTopology } = await this.connectMongoClient(
|
|
266
262
|
connectionString.toString(),
|
|
267
263
|
clientOptions,
|
|
268
|
-
bus
|
|
269
|
-
MongoshMongoClient
|
|
264
|
+
bus
|
|
270
265
|
));
|
|
271
266
|
}
|
|
272
267
|
clientOptions.parentState = state;
|
|
@@ -290,13 +285,13 @@ export class NodeDriverServiceProvider
|
|
|
290
285
|
private bus: MongoshBus;
|
|
291
286
|
|
|
292
287
|
/**
|
|
293
|
-
* Stores the last
|
|
288
|
+
* Stores the last known topology for the MongoClient instance.
|
|
294
289
|
*/
|
|
295
290
|
private _lastSeenTopology: TopologyDescription | undefined;
|
|
296
291
|
|
|
297
292
|
/**
|
|
298
293
|
* Instantiate a new NodeDriverServiceProvider with the Node driver's connected
|
|
299
|
-
* MongoClient instance.
|
|
294
|
+
* MongoClient instance. Do not call this directly, it is only public for testing.
|
|
300
295
|
*
|
|
301
296
|
* @param {MongoClient} mongoClient - The Node drivers' MongoClient instance.
|
|
302
297
|
* @param {DevtoolsConnectOptions} clientOptions
|
|
@@ -317,13 +312,20 @@ export class NodeDriverServiceProvider
|
|
|
317
312
|
this._lastSeenTopology = lastSeenTopology;
|
|
318
313
|
this.platform = 'CLI';
|
|
319
314
|
try {
|
|
320
|
-
this.initialDb =
|
|
315
|
+
this.initialDb = mongoClient.options.dbName || DEFAULT_DB;
|
|
321
316
|
} catch (err: any) {
|
|
322
317
|
this.initialDb = DEFAULT_DB;
|
|
323
318
|
}
|
|
324
319
|
this.currentClientOptions = clientOptions;
|
|
325
320
|
this.baseCmdOptions = { ...DEFAULT_BASE_OPTIONS }; // currently do not have any user-specified connection-wide command options, but I imagine we will eventually
|
|
326
321
|
this.dbcache = new WeakMap();
|
|
322
|
+
|
|
323
|
+
this.mongoClient.on?.(
|
|
324
|
+
'topologyDescriptionChanged',
|
|
325
|
+
(evt: TopologyDescriptionChangedEvent) => {
|
|
326
|
+
this._lastSeenTopology = evt.newDescription;
|
|
327
|
+
}
|
|
328
|
+
);
|
|
327
329
|
}
|
|
328
330
|
|
|
329
331
|
static getVersionInformation(): DependencyVersionInfo {
|
|
@@ -346,7 +348,7 @@ export class NodeDriverServiceProvider
|
|
|
346
348
|
};
|
|
347
349
|
}
|
|
348
350
|
|
|
349
|
-
maybeThrowBetterMissingOptionalDependencyError(
|
|
351
|
+
static maybeThrowBetterMissingOptionalDependencyError(
|
|
350
352
|
err: MongoMissingDependencyError
|
|
351
353
|
): never {
|
|
352
354
|
if (err.message.includes('kerberos')) {
|
|
@@ -392,17 +394,37 @@ export class NodeDriverServiceProvider
|
|
|
392
394
|
throw err;
|
|
393
395
|
}
|
|
394
396
|
|
|
395
|
-
async connectMongoClient(
|
|
397
|
+
private static async connectMongoClient(
|
|
396
398
|
connectionString: ConnectionString | string,
|
|
397
|
-
clientOptions: DevtoolsConnectOptions
|
|
398
|
-
|
|
399
|
+
clientOptions: DevtoolsConnectOptions,
|
|
400
|
+
bus: MongoshBus
|
|
401
|
+
): Promise<{
|
|
402
|
+
client: MongoClient;
|
|
403
|
+
state: DevtoolsConnectionState;
|
|
404
|
+
lastSeenTopology: TopologyDescription | undefined;
|
|
405
|
+
}> {
|
|
406
|
+
let lastSeenTopology: TopologyDescription | undefined;
|
|
407
|
+
|
|
408
|
+
class MongoshMongoClient extends MongoClientCtor {
|
|
409
|
+
constructor(url: string, options?: MongoClientOptions) {
|
|
410
|
+
super(url, options);
|
|
411
|
+
this.on(
|
|
412
|
+
'topologyDescriptionChanged',
|
|
413
|
+
(evt: TopologyDescriptionChangedEvent) => {
|
|
414
|
+
lastSeenTopology = evt.newDescription;
|
|
415
|
+
}
|
|
416
|
+
);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
|
|
399
420
|
try {
|
|
400
|
-
|
|
421
|
+
const result = await connectMongoClient(
|
|
401
422
|
connectionString.toString(),
|
|
402
423
|
clientOptions,
|
|
403
|
-
|
|
404
|
-
|
|
424
|
+
bus,
|
|
425
|
+
MongoshMongoClient
|
|
405
426
|
);
|
|
427
|
+
return { ...result, lastSeenTopology };
|
|
406
428
|
} catch (err: unknown) {
|
|
407
429
|
if (
|
|
408
430
|
typeof err === 'object' &&
|
|
@@ -425,17 +447,19 @@ export class NodeDriverServiceProvider
|
|
|
425
447
|
const connectionString = new ConnectionString(uri);
|
|
426
448
|
const clientOptions = this.processDriverOptions(connectionString, options);
|
|
427
449
|
|
|
428
|
-
const { client, state } =
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
450
|
+
const { client, state, lastSeenTopology } =
|
|
451
|
+
await NodeDriverServiceProvider.connectMongoClient(
|
|
452
|
+
connectionString.toString(),
|
|
453
|
+
clientOptions,
|
|
454
|
+
this.bus
|
|
455
|
+
);
|
|
432
456
|
clientOptions.parentState = state;
|
|
433
457
|
return new NodeDriverServiceProvider(
|
|
434
458
|
client,
|
|
435
459
|
this.bus,
|
|
436
460
|
clientOptions,
|
|
437
461
|
connectionString,
|
|
438
|
-
this._lastSeenTopology
|
|
462
|
+
lastSeenTopology ?? this._lastSeenTopology
|
|
439
463
|
);
|
|
440
464
|
}
|
|
441
465
|
|
|
@@ -646,20 +670,15 @@ export class NodeDriverServiceProvider
|
|
|
646
670
|
|
|
647
671
|
/**
|
|
648
672
|
* Close the connection.
|
|
649
|
-
*
|
|
650
|
-
* @param {boolean} force - Whether to force close the connection.
|
|
651
673
|
*/
|
|
652
|
-
async close(
|
|
674
|
+
async close(): Promise<void> {
|
|
653
675
|
this.dbcache.set(this.mongoClient, new Map());
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
} else {
|
|
657
|
-
await this.mongoClient.close();
|
|
658
|
-
}
|
|
676
|
+
|
|
677
|
+
await this.mongoClient.close();
|
|
659
678
|
}
|
|
660
679
|
|
|
661
680
|
async suspend(): Promise<() => Promise<void>> {
|
|
662
|
-
await this.close(
|
|
681
|
+
await this.close();
|
|
663
682
|
return async () => {
|
|
664
683
|
await this.resetConnectionOptions({});
|
|
665
684
|
};
|
|
@@ -1148,8 +1167,8 @@ export class NodeDriverServiceProvider
|
|
|
1148
1167
|
/**
|
|
1149
1168
|
* Get currently known topology information.
|
|
1150
1169
|
*/
|
|
1151
|
-
|
|
1152
|
-
return
|
|
1170
|
+
getTopologyDescription(): TopologyDescription | undefined {
|
|
1171
|
+
return this._lastSeenTopology;
|
|
1153
1172
|
}
|
|
1154
1173
|
|
|
1155
1174
|
/**
|
|
@@ -1361,16 +1380,19 @@ export class NodeDriverServiceProvider
|
|
|
1361
1380
|
this.uri as ConnectionString,
|
|
1362
1381
|
this.currentClientOptions
|
|
1363
1382
|
);
|
|
1364
|
-
const { client, state } =
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1383
|
+
const { client, state, lastSeenTopology } =
|
|
1384
|
+
await NodeDriverServiceProvider.connectMongoClient(
|
|
1385
|
+
(this.uri as ConnectionString).toString(),
|
|
1386
|
+
clientOptions,
|
|
1387
|
+
this.bus
|
|
1388
|
+
);
|
|
1368
1389
|
try {
|
|
1369
1390
|
await this.mongoClient.close();
|
|
1370
1391
|
// eslint-disable-next-line no-empty
|
|
1371
1392
|
} catch {}
|
|
1372
1393
|
this.mongoClient = client;
|
|
1373
1394
|
this.currentClientOptions.parentState = state;
|
|
1395
|
+
if (lastSeenTopology) this._lastSeenTopology = lastSeenTopology;
|
|
1374
1396
|
}
|
|
1375
1397
|
|
|
1376
1398
|
startSession(options: ClientSessionOptions): ClientSession {
|
|
@@ -1385,25 +1407,17 @@ export class NodeDriverServiceProvider
|
|
|
1385
1407
|
coll?: string
|
|
1386
1408
|
): ChangeStream<Document> {
|
|
1387
1409
|
if (db === undefined && coll === undefined) {
|
|
1388
|
-
|
|
1389
|
-
return (this.mongoClient as any).watch(pipeline, options);
|
|
1410
|
+
return this.mongoClient.watch(pipeline, options);
|
|
1390
1411
|
} else if (db !== undefined && coll === undefined) {
|
|
1391
|
-
return
|
|
1412
|
+
return this.db(db, dbOptions).watch(pipeline, options);
|
|
1392
1413
|
} else if (db !== undefined && coll !== undefined) {
|
|
1393
|
-
return
|
|
1394
|
-
pipeline,
|
|
1395
|
-
options
|
|
1396
|
-
);
|
|
1414
|
+
return this.db(db, dbOptions).collection(coll).watch(pipeline, options);
|
|
1397
1415
|
}
|
|
1398
1416
|
throw new MongoshInternalError(
|
|
1399
1417
|
'Cannot call watch with defined collection but undefined db'
|
|
1400
1418
|
);
|
|
1401
1419
|
}
|
|
1402
1420
|
|
|
1403
|
-
get driverMetadata(): ClientMetadata | undefined {
|
|
1404
|
-
return this.getTopology()?.clientMetadata;
|
|
1405
|
-
}
|
|
1406
|
-
|
|
1407
1421
|
getRawClient(): MongoClient {
|
|
1408
1422
|
return this.mongoClient;
|
|
1409
1423
|
}
|
package/lib/mongodb-patches.d.ts
DELETED
package/lib/mongodb-patches.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.forceCloseMongoClient = forceCloseMongoClient;
|
|
4
|
-
function forceCloseMongoClient(client) {
|
|
5
|
-
var _a, _b, _c, _d;
|
|
6
|
-
let forceClosedConnections = 0;
|
|
7
|
-
for (const server of (_c = (_b = (_a = client.topology) === null || _a === void 0 ? void 0 : _a.s) === null || _b === void 0 ? void 0 : _b.servers) === null || _c === void 0 ? void 0 : _c.values()) {
|
|
8
|
-
const checkedOutConnections = (_d = server === null || server === void 0 ? void 0 : server.pool) === null || _d === void 0 ? void 0 : _d.checkedOutConnections;
|
|
9
|
-
for (const connection of checkedOutConnections !== null && checkedOutConnections !== void 0 ? checkedOutConnections : []) {
|
|
10
|
-
forceClosedConnections++;
|
|
11
|
-
connection.destroy({ force: true });
|
|
12
|
-
connection.onError(new Error('connection canceled by force close'));
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
return client.close(true).then(() => ({ forceClosedConnections }));
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=mongodb-patches.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mongodb-patches.js","sourceRoot":"","sources":["../src/mongodb-patches.ts"],"names":[],"mappings":";;AAGA,sDAqBC;AArBD,SAAgB,qBAAqB,CACnC,MAAmB;;IAEnB,IAAI,sBAAsB,GAAG,CAAC,CAAC;IAC/B,KAAK,MAAM,MAAM,IAAI,MAAA,MAAA,MAAC,MAAc,CAAC,QAAQ,0CAAE,CAAC,0CAAE,OAAO,0CAAE,MAAM,EAAE,EAAE,CAAC;QACpE,MAAM,qBAAqB,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,qBAAqB,CAAC;QAClE,KAAK,MAAM,UAAU,IAAI,qBAAqB,aAArB,qBAAqB,cAArB,qBAAqB,GAAI,EAAE,EAAE,CAAC;YACrD,sBAAsB,EAAE,CAAC;YACzB,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YASpC,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { expect } from 'chai';
|
|
2
|
-
import { MongoClient } from 'mongodb';
|
|
3
|
-
import {
|
|
4
|
-
skipIfServerVersion,
|
|
5
|
-
startSharedTestServer,
|
|
6
|
-
} from '../../../testing/integration-testing-hooks';
|
|
7
|
-
import { forceCloseMongoClient } from './mongodb-patches';
|
|
8
|
-
import { promisify } from 'util';
|
|
9
|
-
|
|
10
|
-
const delay = promisify(setTimeout);
|
|
11
|
-
|
|
12
|
-
describe('forceCloseMongoClient [integration]', function () {
|
|
13
|
-
const testServer = startSharedTestServer();
|
|
14
|
-
|
|
15
|
-
context('for server >= 4.1', function () {
|
|
16
|
-
skipIfServerVersion(testServer, '< 4.1');
|
|
17
|
-
|
|
18
|
-
it('force-closes connections that are currently checked out', async function () {
|
|
19
|
-
if (process.env.MONGOSH_TEST_FORCE_API_STRICT) {
|
|
20
|
-
return this.skip(); // $currentOp is unversioned
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
let client = await MongoClient.connect(
|
|
24
|
-
await testServer.connectionString()
|
|
25
|
-
);
|
|
26
|
-
const testDbName = `test-db-${Date.now()}`;
|
|
27
|
-
const testDb = client.db(testDbName);
|
|
28
|
-
|
|
29
|
-
await testDb.collection('ctrlc').insertOne({});
|
|
30
|
-
let err: any;
|
|
31
|
-
testDb
|
|
32
|
-
.collection('ctrlc')
|
|
33
|
-
.find({
|
|
34
|
-
$where: 'while(true) { /* loop1 */ }',
|
|
35
|
-
})
|
|
36
|
-
.toArray()
|
|
37
|
-
.catch((e) => {
|
|
38
|
-
err = e;
|
|
39
|
-
});
|
|
40
|
-
await delay(100);
|
|
41
|
-
const result = await forceCloseMongoClient(client);
|
|
42
|
-
expect(result.forceClosedConnections).to.equal(1);
|
|
43
|
-
await delay(1);
|
|
44
|
-
expect(err.message).to.include('Topology is closed');
|
|
45
|
-
|
|
46
|
-
client = await MongoClient.connect(await testServer.connectionString());
|
|
47
|
-
for (let i = 0; ; i++) {
|
|
48
|
-
const [out] = await client
|
|
49
|
-
.db('admin')
|
|
50
|
-
.aggregate([
|
|
51
|
-
{ $currentOp: {} },
|
|
52
|
-
{ $match: { 'command.find': 'ctrlc' } },
|
|
53
|
-
{ $count: 'waitingCommands' },
|
|
54
|
-
])
|
|
55
|
-
.toArray();
|
|
56
|
-
if (i === 100 || !out?.waitingCommands) {
|
|
57
|
-
expect(out?.waitingCommands || 0).to.equal(0);
|
|
58
|
-
break;
|
|
59
|
-
}
|
|
60
|
-
await delay(100);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
await client.db(testDbName).dropDatabase();
|
|
64
|
-
await client.close();
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
});
|
package/src/mongodb-patches.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { MongoClient } from 'mongodb';
|
|
2
|
-
|
|
3
|
-
// Close a MongoClient + abort currently ongoing operations.
|
|
4
|
-
export function forceCloseMongoClient(
|
|
5
|
-
client: MongoClient
|
|
6
|
-
): Promise<{ forceClosedConnections: number }> {
|
|
7
|
-
let forceClosedConnections = 0;
|
|
8
|
-
for (const server of (client as any).topology?.s?.servers?.values()) {
|
|
9
|
-
const checkedOutConnections = server?.pool?.checkedOutConnections;
|
|
10
|
-
for (const connection of checkedOutConnections ?? []) {
|
|
11
|
-
forceClosedConnections++;
|
|
12
|
-
connection.destroy({ force: true });
|
|
13
|
-
// Immediately after destroying, act as if the close had happened,
|
|
14
|
-
// but *not* as an actual 'close' event on the socket itself --
|
|
15
|
-
// a close on the socket is communicated as a network error, which
|
|
16
|
-
// is considered an retryable error by operations which are currently
|
|
17
|
-
// running on this connection, but the whole point here is that these
|
|
18
|
-
// operations should *not* be retried. So, we just act as if something
|
|
19
|
-
// had happened that interrupts all ongoing operations and also is
|
|
20
|
-
// supposed to destroy the connection (which is a no-op at this point).
|
|
21
|
-
connection.onError(new Error('connection canceled by force close'));
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return client.close(true).then(() => ({ forceClosedConnections }));
|
|
25
|
-
}
|