From 51d03fd71b6ce0aa0096a22448926bf3e7b06206 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Mon, 20 Dec 2021 14:58:43 +0100 Subject: [PATCH] fix(data-service): do not ignore directConnection=false COMPASS-5376 --- .../src/connect-mongo-client.spec.ts | 21 +++++++++++++++++++ .../data-service/src/connect-mongo-client.ts | 3 ++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/data-service/src/connect-mongo-client.spec.ts b/packages/data-service/src/connect-mongo-client.spec.ts index 70850676866..93e7b9a7041 100644 --- a/packages/data-service/src/connect-mongo-client.spec.ts +++ b/packages/data-service/src/connect-mongo-client.spec.ts @@ -73,6 +73,27 @@ describe('connectMongoClient', function () { }); }); + it('should not override a user-specified directConnection option', async function () { + const [client, tunnel, { url, options }] = await connectMongoClient( + { + connectionString: 'mongodb://localhost:27018/?directConnection=false', + }, + setupListeners, + tunnelLocalPort + ); + + toBeClosed.push(client, tunnel); + + assert.strictEqual( + url, + 'mongodb://localhost:27018/?directConnection=false' + ); + + assert.deepStrictEqual(options, { + monitorCommands: true, + }); + }); + it('should at least try to run a ping command to verify connectivity', async function () { try { await connectMongoClient( diff --git a/packages/data-service/src/connect-mongo-client.ts b/packages/data-service/src/connect-mongo-client.ts index d4de27f9940..051875ea8a9 100644 --- a/packages/data-service/src/connect-mongo-client.ts +++ b/packages/data-service/src/connect-mongo-client.ts @@ -116,8 +116,9 @@ function connectionOptionsToMongoClientParams( const isLoadBalanced = url.searchParams.get('loadBalanced') === 'true'; const isReplicaSet = url.isSRV || url.hosts.length > 1 || url.searchParams.has('replicaSet'); + const hasDirectConnection = url.searchParams.has('directConnection'); - if (!isReplicaSet && !isLoadBalanced) { + if (!isReplicaSet && !isLoadBalanced && !hasDirectConnection) { url.searchParams.set('directConnection', 'true'); }