From 41ea187cbd1fb76ea8243b5307321b31c39faa3d Mon Sep 17 00:00:00 2001 From: Durran Jordan Date: Tue, 2 Nov 2021 14:35:16 +0100 Subject: [PATCH] test(NODE-3684): skip tests on serverless --- src/operations/execute_operation.ts | 24 +++++++++---------- src/sdam/server_selection.ts | 2 ++ .../aggregate-write-readPreference.json | 8 ++++--- .../aggregate-write-readPreference.yml | 4 +++- .../db-aggregate-write-readPreference.json | 6 +++-- .../db-aggregate-write-readPreference.yml | 2 ++ 6 files changed, 28 insertions(+), 18 deletions(-) diff --git a/src/operations/execute_operation.ts b/src/operations/execute_operation.ts index 0bd2dc20b69..4ac0a368e9d 100644 --- a/src/operations/execute_operation.ts +++ b/src/operations/execute_operation.ts @@ -17,7 +17,7 @@ import type { Topology } from '../sdam/topology'; import type { ClientSession } from '../sessions'; import type { Document } from '../bson'; import { supportsRetryableWrites } from '../utils'; -import { secondaryWritableServerSelector } from '../sdam/server_selection'; +import { secondaryWritableServerSelector, ServerSelector } from '../sdam/server_selection'; const MMAPv1_RETRY_WRITES_ERROR_CODE = MONGODB_ERROR_CODES.IllegalOperation; const MMAPv1_RETRY_WRITES_ERROR_MESSAGE = @@ -151,6 +151,16 @@ function executeWithServerSelection( session.unpin(); } + let selector: ReadPreference | ServerSelector; + + // If operation should try to write to secondary use the custom server selector + // otherwise provide the read preference. + if (operation.trySecondaryWrite) { + selector = secondaryWritableServerSelector(topology.commonWireVersion, readPreference); + } else { + selector = readPreference; + } + const serverSelectionOptions = { session }; function callbackWithRetry(err?: any, result?: any) { if (err == null) { @@ -182,16 +192,6 @@ function executeWithServerSelection( return; } - let selector; - - // If operation should try to write to secondary use the custom server selector - // otherwise provide the read preference. - if (operation.trySecondaryWrite) { - selector = secondaryWritableServerSelector(topology.commonWireVersion, readPreference); - } else { - selector = readPreference; - } - // select a new server, and attempt to retry the operation topology.selectServer(selector, serverSelectionOptions, (e?: any, server?: any) => { if ( @@ -238,7 +238,7 @@ function executeWithServerSelection( } // select a server, and execute the operation against it - topology.selectServer(readPreference, serverSelectionOptions, (err?: any, server?: any) => { + topology.selectServer(selector, serverSelectionOptions, (err?: any, server?: any) => { if (err) { callback(err); return; diff --git a/src/sdam/server_selection.ts b/src/sdam/server_selection.ts index 444d83ecae9..95010d66f9d 100644 --- a/src/sdam/server_selection.ts +++ b/src/sdam/server_selection.ts @@ -43,6 +43,8 @@ export function secondaryWritableServerSelector( // If server version >= 5.0... // - If read preference is supplied, use that. // - If no read preference is supplied, use primary. + /* eslint no-console: 0 */ + console.log('select', readPreference, wireVersion); if (!readPreference || (wireVersion && wireVersion < MIN_SECONDARY_WRITE_WIRE_VERSION)) { return readPreferenceServerSelector(ReadPreference.primary); } diff --git a/test/spec/crud/unified/aggregate-write-readPreference.json b/test/spec/crud/unified/aggregate-write-readPreference.json index 44680fb1ff9..bc887e83cbc 100644 --- a/test/spec/crud/unified/aggregate-write-readPreference.json +++ b/test/spec/crud/unified/aggregate-write-readPreference.json @@ -1,6 +1,6 @@ { "description": "aggregate-write-readPreference", - "schemaVersion": "1.3", + "schemaVersion": "1.4", "runOnRequirements": [ { "minServerVersion": "3.6", @@ -90,7 +90,8 @@ "description": "Aggregate with $out includes read preference for 5.0+ server", "runOnRequirements": [ { - "minServerVersion": "5.0" + "minServerVersion": "5.0", + "serverless": "forbid" } ], "operations": [ @@ -181,7 +182,8 @@ "runOnRequirements": [ { "minServerVersion": "4.2", - "maxServerVersion": "4.4.99" + "maxServerVersion": "4.4.99", + "serverless": "forbid" } ], "operations": [ diff --git a/test/spec/crud/unified/aggregate-write-readPreference.yml b/test/spec/crud/unified/aggregate-write-readPreference.yml index 424713161a1..86f5a4399c7 100644 --- a/test/spec/crud/unified/aggregate-write-readPreference.yml +++ b/test/spec/crud/unified/aggregate-write-readPreference.yml @@ -1,6 +1,6 @@ description: aggregate-write-readPreference -schemaVersion: '1.3' +schemaVersion: '1.4' runOnRequirements: # 3.6+ non-standalone is needed to utilize $readPreference in OP_MSG @@ -59,6 +59,7 @@ tests: - description: "Aggregate with $out includes read preference for 5.0+ server" runOnRequirements: - minServerVersion: "5.0" + serverless: "forbid" operations: - object: *collection0 name: aggregate @@ -91,6 +92,7 @@ tests: # drivers may avoid inheriting a client-level read concern for pre-4.2. - minServerVersion: "4.2" maxServerVersion: "4.4.99" + serverless: "forbid" operations: - object: *collection0 name: aggregate diff --git a/test/spec/crud/unified/db-aggregate-write-readPreference.json b/test/spec/crud/unified/db-aggregate-write-readPreference.json index 2a20542390b..2a81282de81 100644 --- a/test/spec/crud/unified/db-aggregate-write-readPreference.json +++ b/test/spec/crud/unified/db-aggregate-write-readPreference.json @@ -64,7 +64,8 @@ "description": "Database-level aggregate with $out includes read preference for 5.0+ server", "runOnRequirements": [ { - "minServerVersion": "5.0" + "minServerVersion": "5.0", + "serverless": "forbid" } ], "operations": [ @@ -158,7 +159,8 @@ "runOnRequirements": [ { "minServerVersion": "4.2", - "maxServerVersion": "4.4.99" + "maxServerVersion": "4.4.99", + "serverless": "forbid" } ], "operations": [ diff --git a/test/spec/crud/unified/db-aggregate-write-readPreference.yml b/test/spec/crud/unified/db-aggregate-write-readPreference.yml index a79eb0650a7..04a3b2169f5 100644 --- a/test/spec/crud/unified/db-aggregate-write-readPreference.yml +++ b/test/spec/crud/unified/db-aggregate-write-readPreference.yml @@ -52,6 +52,7 @@ tests: - description: "Database-level aggregate with $out includes read preference for 5.0+ server" runOnRequirements: - minServerVersion: "5.0" + serverless: "forbid" operations: - object: *database0 name: aggregate @@ -85,6 +86,7 @@ tests: # drivers may avoid inheriting a client-level read concern for pre-4.2. - minServerVersion: "4.2" maxServerVersion: "4.4.99" + serverless: "forbid" operations: - object: *database0 name: aggregate