summaryrefslogtreecommitdiff
path: root/jstests/replsets/non_transaction_snapshot_reads.js
blob: ed4dc19a1643b6da250281b8c3f2f4e12bcc9bea (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
40
41
/**
 * Tests readConcern level snapshot outside of transactions.
 *
 * @tags: [
 *   requires_fcv_46,
 *   requires_majority_read_concern,
 * ]
 */
(function() {
"use strict";

load("jstests/libs/global_snapshot_reads_util.js");

// TODO(SERVER-47672): Use minSnapshotHistoryWindowInSeconds instead.
const options = {
    setParameter: {maxTargetSnapshotHistoryWindowInSeconds: 600}
};
const replSet = new ReplSetTest({nodes: 3, nodeOptions: options});
replSet.startSet();
replSet.initiateWithHighElectionTimeout();
const primaryDB = replSet.getPrimary().getDB('test');
const secondaryDB = replSet.getSecondary().getDB('test');
snapshotReadsTest({
    testScenarioName: jsTestName(),
    primaryDB: primaryDB,
    secondaryDB: secondaryDB,
    collName: "test",
    awaitCommittedFn: () => {
        replSet.awaitLastOpCommitted();
    }
});

// Ensure "atClusterTime" is omitted from a regular (non-snapshot) reads.
primaryDB["collection"].insertOne({});
const cursor = assert.commandWorked(primaryDB.runCommand({find: "test"})).cursor;
assert(!cursor.hasOwnProperty("atClusterTime"));
const distinctResult = assert.commandWorked(primaryDB.runCommand({distinct: "test", key: "_id"}));
assert(!distinctResult.hasOwnProperty("atClusterTime"));

replSet.stopSet();
})();