summaryrefslogtreecommitdiff
path: root/jstests/sharding/min_optime_recovery_on_successful_move_chunk_commit.js
blob: 143b939d38176bf2ecad83517dd678c8ad4eceaf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/**
 * Tests that the minOpTimeRecovery document will be created after a migration.
 */
(function() {
"use strict";

var st = new ShardingTest({shards: 2});

var testDB = st.s.getDB('test');
testDB.adminCommand({enableSharding: 'test'});
st.ensurePrimaryShard('test', st.shard0.shardName);
testDB.adminCommand({shardCollection: 'test.user', key: {x: 1}});

var priConn = st.configRS.getPrimary();
var replStatus = priConn.getDB('admin').runCommand({replSetGetStatus: 1});
replStatus.members.forEach(function(memberState) {
    if (memberState.state == 1) {  // if primary
        assert.neq(null, memberState.optime);
        assert.neq(null, memberState.optime.ts);
        assert.neq(null, memberState.optime.t);
    }
});

testDB.adminCommand({moveChunk: 'test.user', find: {x: 0}, to: st.shard1.shardName});

var shardAdmin = st.rs0.getPrimary().getDB('admin');
var minOpTimeRecoveryDoc = shardAdmin.system.version.findOne({_id: 'minOpTimeRecovery'});

assert.neq(null, minOpTimeRecoveryDoc);
assert.eq('minOpTimeRecovery', minOpTimeRecoveryDoc._id);
assert.eq(st.configRS.getURL(),
          minOpTimeRecoveryDoc.configsvrConnectionString);       // TODO SERVER-34166: Remove.
assert.eq(st.shard0.shardName, minOpTimeRecoveryDoc.shardName);  // TODO SERVER-34166: Remove.
assert.gt(minOpTimeRecoveryDoc.minOpTime.ts.getTime(), 0);
assert.eq(0, minOpTimeRecoveryDoc.minOpTimeUpdaters);

st.stop();
})();