diff options
author | Luis Osta <luis.osta@mongodb.com> | 2021-12-09 21:13:29 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-12-09 22:18:58 +0000 |
commit | 0ff3674221b15c471ee5c5dae8f81c4365cb16e0 (patch) | |
tree | 5160c6df3eeeaab1a97bad75cfea77afc9dd767b | |
parent | c6161ceaa231a4d2cdd9126f357d4bb88998c267 (diff) | |
download | mongo-0ff3674221b15c471ee5c5dae8f81c4365cb16e0.tar.gz |
SERVER-61924 Replace test with the v4.0 version due to missing failpoint commands
-rw-r--r-- | jstests/sharding/retryable_mongos_write_errors.js | 67 |
1 files changed, 39 insertions, 28 deletions
diff --git a/jstests/sharding/retryable_mongos_write_errors.js b/jstests/sharding/retryable_mongos_write_errors.js index e175dd9c023..efa6963f226 100644 --- a/jstests/sharding/retryable_mongos_write_errors.js +++ b/jstests/sharding/retryable_mongos_write_errors.js @@ -5,19 +5,8 @@ (function() { "use strict"; -load("jstests/libs/fail_point_util.js"); load('jstests/libs/parallelTester.js'); // for ScopedThread. -// Creates a new connection, uses it to get the database from the parameter name and inserts -// multiple documents to the provided collection. -function insertHandler(host, databaseName, collectionName) { - const conn = new Mongo(host); - const database = conn.getDB(databaseName); - // creates an array with 10 documents - const docs = Array.from(Array(10).keys()).map((i) => ({a: i, b: "retryable"})); - return database.runCommand({insert: collectionName, documents: docs}); -} - const dbName = "test"; const collName = "retryable_mongos_write_errors"; const ns = dbName + "." + collName; @@ -25,31 +14,53 @@ const ns = dbName + "." + collName; const st = new ShardingTest({config: 1, mongos: 1, shards: 1}); const shard0Primary = st.rs0.getPrimary(); -const insertFailPoint = - configureFailPoint(shard0Primary, "hangAfterCollectionInserts", {collectionNS: ns}); +// Creates a new connection, uses it to get the database from the parameter name and inserts +// multiple documents to the provided collection. +function insertHandler(host, dbName, collName, testData) { + try { + TestData = testData; + const conn = new Mongo(host); + const database = conn.getDB(dbName); + // creates an array with 10 documents + const docs = Array.from(Array(10).keys()).map((i) => ({a: i, b: "retryable"})); + const commandResponse = database.runCommand({insert: collName, documents: docs}); + // assert that retryableInsertRes failed with the HostUnreachableError or + // InterruptedAtShutdown error code + assert.commandFailedWithCode(commandResponse, ErrorCodes.InterruptedAtShutdown); + jsTest.log("Command Response: " + tojson(commandResponse) + "." + commandResponse.code); + return {ok: 1}; + } catch (e) { + if (!isNetworkError(e)) { + return {ok: 0, error: e.toString(), stack: e.stack}; + } + + return {ok: 1}; + } +} + +const failpointName = 'hangAfterCollectionInserts'; +const executeFailPointCommand = (mode) => { + assert.commandWorked(shard0Primary.adminCommand( + {configureFailPoint: failpointName, mode, data: {collectionNS: ns}})); +}; + +executeFailPointCommand("alwaysOn"); -const insertThread = new Thread(insertHandler, st.s.host, dbName, collName); +const insertThread = new ScopedThread(insertHandler, st.s.host, dbName, collName, TestData); jsTest.log("Starting To Insert Documents"); insertThread.start(); -insertFailPoint.wait(); + +checkLog.contains(shard0Primary, `${failpointName} fail point enabled`); +jsTest.log("Starting to shutdown MongoS."); MongoRunner.stopMongos(st.s); try { - const commandResponse = insertThread.returnData(); - jsTest.log("Command Response: " + tojson(commandResponse) + "." + commandResponse.code); - // assert that retryableInsertRes failed with the HostUnreachableError or - // InterruptedAtShutdown error code - assert.eq(commandResponse.code, ErrorCodes.InterruptedAtShutdown, tojson(commandResponse)); -} catch (e) { - jsTest.log("Error ocurred: " + e); - if (!isNetworkError(e)) { - throw e; - } + assert.commandWorked(insertThread.returnData()); +} finally { + jsTest.log("Finished Assertions, Turning Off Failpoint"); + executeFailPointCommand("off"); } -jsTest.log("Finished Assertions, Turning Off Failpoint"); - -insertFailPoint.off(); st.s = MongoRunner.runMongos(st.s); jsTest.log('Shutting down sharding test'); |