summaryrefslogtreecommitdiff
path: root/jstests/sharding/logical_time_metadata.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/sharding/logical_time_metadata.js')
-rw-r--r--jstests/sharding/logical_time_metadata.js81
1 files changed, 40 insertions, 41 deletions
diff --git a/jstests/sharding/logical_time_metadata.js b/jstests/sharding/logical_time_metadata.js
index e8afac2f5b3..838b3d07816 100644
--- a/jstests/sharding/logical_time_metadata.js
+++ b/jstests/sharding/logical_time_metadata.js
@@ -4,58 +4,57 @@
* where the cluster time metadata can propagated, making it inherently racy.
*/
(function() {
- "use strict";
+"use strict";
- function assertHasClusterTimeAndOperationTime(res) {
- assert.hasFields(res, ['$clusterTime']);
- assert.hasFields(res.$clusterTime, ['clusterTime', 'signature']);
- }
+function assertHasClusterTimeAndOperationTime(res) {
+ assert.hasFields(res, ['$clusterTime']);
+ assert.hasFields(res.$clusterTime, ['clusterTime', 'signature']);
+}
- var st = new ShardingTest({shards: {rs0: {nodes: 3}}});
- st.s.adminCommand({enableSharding: 'test'});
+var st = new ShardingTest({shards: {rs0: {nodes: 3}}});
+st.s.adminCommand({enableSharding: 'test'});
- var db = st.s.getDB('test');
+var db = st.s.getDB('test');
- var res = db.runCommand({insert: 'user', documents: [{x: 10}]});
- assert.commandWorked(res);
- assertHasClusterTimeAndOperationTime(res);
+var res = db.runCommand({insert: 'user', documents: [{x: 10}]});
+assert.commandWorked(res);
+assertHasClusterTimeAndOperationTime(res);
- res = db.runCommand({blah: 'blah'});
- assert.commandFailed(res);
- assertHasClusterTimeAndOperationTime(res);
+res = db.runCommand({blah: 'blah'});
+assert.commandFailed(res);
+assertHasClusterTimeAndOperationTime(res);
- res = db.runCommand({insert: "user", documents: [{x: 10}], writeConcern: {blah: "blah"}});
- assert.commandFailed(res);
- assertHasClusterTimeAndOperationTime(res);
+res = db.runCommand({insert: "user", documents: [{x: 10}], writeConcern: {blah: "blah"}});
+assert.commandFailed(res);
+assertHasClusterTimeAndOperationTime(res);
- res = st.rs0.getPrimary().adminCommand({replSetGetStatus: 1});
+res = st.rs0.getPrimary().adminCommand({replSetGetStatus: 1});
- // Cluster time may advance after replSetGetStatus finishes executing and before its logical
- // time metadata is computed, in which case the response's $clusterTime will be greater than the
- // appliedOpTime timestamp in its body. Assert the timestamp is <= $clusterTime to account for
- // this.
- var appliedTime = res.optimes.appliedOpTime.ts;
- var logicalTimeMetadata = res.$clusterTime;
- assert.lte(0,
- timestampCmp(appliedTime, logicalTimeMetadata.clusterTime),
- 'appliedTime: ' + tojson(appliedTime) + ' not less than or equal to clusterTime: ' +
- tojson(logicalTimeMetadata.clusterTime));
+// Cluster time may advance after replSetGetStatus finishes executing and before its logical
+// time metadata is computed, in which case the response's $clusterTime will be greater than the
+// appliedOpTime timestamp in its body. Assert the timestamp is <= $clusterTime to account for
+// this.
+var appliedTime = res.optimes.appliedOpTime.ts;
+var logicalTimeMetadata = res.$clusterTime;
+assert.lte(0,
+ timestampCmp(appliedTime, logicalTimeMetadata.clusterTime),
+ 'appliedTime: ' + tojson(appliedTime) + ' not less than or equal to clusterTime: ' +
+ tojson(logicalTimeMetadata.clusterTime));
- assert.commandWorked(db.runCommand({ping: 1, '$clusterTime': logicalTimeMetadata}));
+assert.commandWorked(db.runCommand({ping: 1, '$clusterTime': logicalTimeMetadata}));
- db = st.rs0.getPrimary().getDB('testRS');
- res = db.runCommand({insert: 'user', documents: [{x: 10}]});
- assert.commandWorked(res);
- assertHasClusterTimeAndOperationTime(res);
+db = st.rs0.getPrimary().getDB('testRS');
+res = db.runCommand({insert: 'user', documents: [{x: 10}]});
+assert.commandWorked(res);
+assertHasClusterTimeAndOperationTime(res);
- res = db.runCommand({blah: 'blah'});
- assert.commandFailed(res);
- assertHasClusterTimeAndOperationTime(res);
+res = db.runCommand({blah: 'blah'});
+assert.commandFailed(res);
+assertHasClusterTimeAndOperationTime(res);
- res = db.runCommand({insert: "user", documents: [{x: 10}], writeConcern: {blah: "blah"}});
- assert.commandFailed(res);
- assertHasClusterTimeAndOperationTime(res);
-
- st.stop();
+res = db.runCommand({insert: "user", documents: [{x: 10}], writeConcern: {blah: "blah"}});
+assert.commandFailed(res);
+assertHasClusterTimeAndOperationTime(res);
+st.stop();
})();