diff options
author | Misha Tyulenev <misha@mongodb.com> | 2018-04-30 11:11:43 -0400 |
---|---|---|
committer | Misha Tyulenev <misha@mongodb.com> | 2018-04-30 14:54:15 -0400 |
commit | b786f13ab28e275bffded1302b21bfd88977150d (patch) | |
tree | 15b3a6ef260386cf497c7468924ea32f81e84d64 | |
parent | a43fe9ae73752fbd98107cef5421341fe291ab32 (diff) | |
download | mongo-b786f13ab28e275bffded1302b21bfd88977150d.tar.gz |
SERVER-32672 reset session and connection clusterTime
-rw-r--r-- | src/mongo/shell/utils_auth.js | 39 |
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) { } } |