summaryrefslogtreecommitdiff
path: root/src/mongo/shell/collection.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/shell/collection.js')
-rw-r--r--src/mongo/shell/collection.js13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/mongo/shell/collection.js b/src/mongo/shell/collection.js
index f888ed67c4e..48f39a06c1d 100644
--- a/src/mongo/shell/collection.js
+++ b/src/mongo/shell/collection.js
@@ -776,6 +776,19 @@ DBCollection.prototype.findAndModify = function(args) {
cmd[key] = args[key];
}
+ {
+ const kWireVersionSupportingRetryableWrites = 6;
+ const serverSupportsRetryableWrites =
+ this.getMongo().getMinWireVersion() <= kWireVersionSupportingRetryableWrites &&
+ kWireVersionSupportingRetryableWrites <= this.getMongo().getMaxWireVersion();
+
+ const session = this.getDB().getSession();
+ if (serverSupportsRetryableWrites && session.getOptions().shouldRetryWrites() &&
+ session._serverSession.canRetryWrites(cmd)) {
+ cmd = session._serverSession.assignTransactionNumber(cmd);
+ }
+ }
+
var ret = this._db.runCommand(cmd);
if (!ret.ok) {
if (ret.errmsg == "No matching object found") {