summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuis Osta <luis.osta@mongodb.com>2021-12-09 21:13:29 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-12-09 22:18:58 +0000
commit0ff3674221b15c471ee5c5dae8f81c4365cb16e0 (patch)
tree5160c6df3eeeaab1a97bad75cfea77afc9dd767b
parentc6161ceaa231a4d2cdd9126f357d4bb88998c267 (diff)
downloadmongo-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.js67
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');