summaryrefslogtreecommitdiff
path: root/jstests/sharding/min_optime_recovery_on_successful_move_chunk_commit.js
blob: c33eabeffd77d99ac3f5dccde91cefaa8eb05918 (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
39
/**
 * 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();

})();