diff options
Diffstat (limited to 'src/mongo/shell/collection.js')
-rw-r--r-- | src/mongo/shell/collection.js | 13 |
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") { |