summaryrefslogtreecommitdiff
path: root/jstests/replsets/initial_sync_read_concern_no_oplog.js
blob: e52ac1faa06a592f7fe36187ca6c571234c4ffb7 (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
// Test that if an afterClusterTime query is issued to a node in initial sync that has not yet
// created its oplog, the node returns an error rather than crashing.
(function() {
    'use strict';
    load('jstests/libs/check_log.js');

    const replSet = new ReplSetTest({nodes: 1});

    replSet.startSet();
    replSet.initiate();
    const primary = replSet.getPrimary();
    const secondary = replSet.add();

    assert.commandWorked(secondary.adminCommand(
        {configureFailPoint: 'initialSyncHangBeforeCreatingOplog', mode: 'alwaysOn'}));
    replSet.reInitiate();

    checkLog.contains(secondary,
                      'initial sync - initialSyncHangBeforeCreatingOplog fail point enabled');

    assert.commandFailedWithCode(
        secondary.getDB('local').runCommand(
            {find: 'coll', limit: 1, readConcern: {afterClusterTime: Timestamp(1, 1)}}),
        ErrorCodes.NotYetInitialized);

    assert.commandWorked(secondary.adminCommand(
        {configureFailPoint: 'initialSyncHangBeforeCreatingOplog', mode: 'off'}));

    replSet.awaitReplication();
    replSet.awaitSecondaryNodes();

    replSet.stopSet();
})();