-
Type:
Bug
-
Resolution: Won't Do
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: Sharding
-
None
-
ALL
-
Sharding 2019-12-16, Sharding 2019-12-30, Sharding 2020-01-13
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Presumably this error is returned because WC timeout is considered a retryable error?
assert: write failed with error: {
"nMatched" : 0,
"nUpserted" : 0,
"nModified" : 0,
"writeError" : {
"code" : 217,
"errmsg" : "Cannot retry a retryable write that has been converted into a transaction"
}
}
(function() {
'use strict';
load("jstests/libs/write_concern_util.js");
load("jstests/sharding/libs/update_shard_key_helpers.js");
const st = new ShardingTest({mongos: 1, shards: {
rs0: {
nodes: [{}, {}, {rsConfig: {tags: {tag1: "value1"}}}],
settings: {getLastErrorModes: {tagged: {tag1: 1}}}
},
rs1: {nodes: 3}
}});
const wc = {w: "tagged", wtimeout: 6000};
const kDbName = 'db';
const mongos = st.s0;
const shard0 = st.shard0.shardName;
const shard1 = st.shard1.shardName;
const ns = kDbName + '.foo';
assert.commandWorked(mongos.adminCommand({enableSharding: kDbName}));
st.ensurePrimaryShard(kDbName, shard0);
let session = st.s.startSession({retryWrites: true});
let sessionDB = session.getDatabase(kDbName);
let docsToInsert =
[{"x": 4, "a": 3}, {"x": 78}, {"x": 100}, {"x": 300, "a": 3}, {"x": 500, "a": 6}];
shardCollectionMoveChunks(st, kDbName, ns, {"x": 1}, docsToInsert, {"x": 100}, {"x": 300});
cleanupOrphanedDocs(st, ns);
// Pause replication on the tagged secondary.
stopServerReplication(st.rs0.nodes[2]);
let res = sessionDB.foo.update({x: 4}, {$set: {x: 1000}}, {writeConcern: wc});
// Actually fails with 217 (IncompleteTransactionHistory)
assert.commandWorkedIgnoringWriteConcernErrors(res);
checkWriteConcernTimedOut(res);
res = sessionDB.runCommand({
findAndModify: 'foo',
query: {x: 78},
update: {$set: {x: 250}},
lsid: {id: UUID()},
txnNumber: NumberLong(1),
writeConcern: wc,
});
// Actually fails with 217 (IncompleteTransactionHistory)
assert.commandWorkedIgnoringWriteConcernErrors(res);
checkWriteConcernTimedOut(res);
restartServerReplication(st.rs0.nodes[2]);
mongos.getDB(kDbName).foo.drop();
st.stop();
})();
- depends on
-
SERVER-45360 Bring shell retryable error codes to parity with driver specs
-
- Closed
-
- related to
-
SERVER-44289 Retryable writes that change shard key value and owning shard that include write concern fail with InvalidOptions
-
- Closed
-