summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMisha Tyulenev <misha@mongodb.com>2018-04-30 11:11:43 -0400
committerMisha Tyulenev <misha@mongodb.com>2018-04-30 14:54:15 -0400
commitb786f13ab28e275bffded1302b21bfd88977150d (patch)
tree15b3a6ef260386cf497c7468924ea32f81e84d64
parenta43fe9ae73752fbd98107cef5421341fe291ab32 (diff)
downloadmongo-b786f13ab28e275bffded1302b21bfd88977150d.tar.gz
SERVER-32672 reset session and connection clusterTime
-rw-r--r--src/mongo/shell/utils_auth.js39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/mongo/shell/utils_auth.js b/src/mongo/shell/utils_auth.js
index b0437f50bf3..1ec8d9bbae5 100644
--- a/src/mongo/shell/utils_auth.js
+++ b/src/mongo/shell/utils_auth.js
@@ -74,6 +74,23 @@ var authutil;
var ex;
const authMode = jsTest.options().clusterAuthMode;
+ // put a connection in an array for uniform processing.
+ let connArray = conn;
+ if (conn.length == null)
+ connArray = [conn];
+
+ let clusterTimes = connArray.map(connElem => {
+ const connClusterTime = connElem.getClusterTime();
+ const sessionClusterTime = connElem._getDefaultSession().getClusterTime();
+ const operationTime = connElem._getDefaultSession().getOperationTime();
+
+ connElem.resetClusterTime_forTesting();
+ connElem._getDefaultSession().resetClusterTime_forTesting();
+ connElem._getDefaultSession().resetOperationTime_forTesting();
+
+ return {connClusterTime, sessionClusterTime, operationTime};
+ });
+
if (authMode === 'keyFile') {
authutil.assertAuthenticate(conn, 'admin', {
user: '__system',
@@ -93,6 +110,28 @@ var authutil;
} finally {
try {
authutil.logout(conn, 'admin');
+ let connArray = conn;
+ if (conn.length == null)
+ connArray = [conn];
+
+ for (let i = 0; i < connArray.length; i++) {
+ let connElem = connArray[i];
+ connElem.resetClusterTime_forTesting();
+ connElem._getDefaultSession().resetClusterTime_forTesting();
+ connElem._getDefaultSession().resetOperationTime_forTesting();
+ if (clusterTimes[i].connClusterTime) {
+ jsTestLog("Restoring clusterTime: " + tojson(clusterTimes[i].connClusterTime));
+ connElem.advanceClusterTime(clusterTimes[i].connClusterTime);
+ }
+ if (clusterTimes[i].sessionClusterTime) {
+ connElem._getDefaultSession().advanceClusterTime(
+ clusterTimes[i].sessionClusterTime);
+ }
+ if (clusterTimes[i].operationTime) {
+ connElem._getDefaultSession().advanceOperationTime(
+ clusterTimes[i].operationTime);
+ }
+ }
} catch (ex) {
}
}