From fb75a4d52727176eaf4d60adcdca7127be7c8fd3 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Wed, 7 Jul 2021 15:12:17 +0200 Subject: [PATCH] fix(service-provider-core): skip directConnection in URL when loadBalanced is set --- packages/service-provider-core/src/uri-generator.spec.ts | 8 ++++++++ packages/service-provider-core/src/uri-generator.ts | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/service-provider-core/src/uri-generator.spec.ts b/packages/service-provider-core/src/uri-generator.spec.ts index dcefdc60d9..8d8e57e697 100644 --- a/packages/service-provider-core/src/uri-generator.spec.ts +++ b/packages/service-provider-core/src/uri-generator.spec.ts @@ -125,6 +125,14 @@ describe('uri-generator.generate-uri', () => { }); }); + context('including loadBalanced', () => { + const uri = 'mongodb://192.0.0.1:27018/db?loadBalanced=true'; + const options = { connectionSpecifier: uri }; + it('does not add the directConnection parameter', () => { + expect(generateUri(options)).to.equal(uri); + }); + }); + context('including explicit directConnection', () => { const uri = 'mongodb://192.0.0.1:27018/db?directConnection=false'; const options = { connectionSpecifier: uri }; diff --git a/packages/service-provider-core/src/uri-generator.ts b/packages/service-provider-core/src/uri-generator.ts index bf93434ff3..103e3282ce 100644 --- a/packages/service-provider-core/src/uri-generator.ts +++ b/packages/service-provider-core/src/uri-generator.ts @@ -218,7 +218,7 @@ function generateUriNormalized(options: CliOptions): ConnectionString { function addShellConnectionStringParameters(uri: ConnectionString): ConnectionString { uri = uri.clone(); const params = uri.searchParams; - if (!params.has('replicaSet') && !params.has('directConnection') && uri.hosts.length === 1) { + if (!params.has('replicaSet') && !params.has('directConnection') && !params.has('loadBalanced') && uri.hosts.length === 1) { params.set('directConnection', 'true'); } if (!params.has('tlsCertificateFile') && params.has('tlsCertificateKeyFile')) {