summaryrefslogtreecommitdiff
path: root/jstests/noPassthrough/sync_write.js
blob: a76d86ec7f07a8a9a1be03a2a9a56e849fed8418 (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
/**
 * SERVER-20617: Tests that journaled write operations survive a kill -9 of the mongod.
 *
 * This test requires persistence to ensure data survives a restart.
 * @tags: [requires_persistence]
 */
(function() {
'use strict';

//  The following test verifies that writeConcern: {j: true} ensures that data is durable.
var dbpath = MongoRunner.dataPath + 'sync_write';
resetDbpath(dbpath);

var mongodArgs = {dbpath: dbpath, noCleanData: true, journal: ''};

// Start a mongod.
var conn = MongoRunner.runMongod(mongodArgs);
assert.neq(null, conn, 'mongod was unable to start up');

// Now connect to the mongod, do a journaled write and abruptly stop the server.
var testDB = conn.getDB('test');
assert.commandWorked(testDB.synced.insert({synced: true}, {writeConcern: {j: true}}));
MongoRunner.stopMongod(conn, 9, {allowedExitCode: MongoRunner.EXIT_SIGKILL});

// Restart the mongod.
conn = MongoRunner.runMongod(mongodArgs);
assert.neq(null, conn, 'mongod was unable to restart after receiving a SIGKILL');

// Check that our journaled write still is present.
testDB = conn.getDB('test');
assert.eq(1, testDB.synced.count({synced: true}), 'synced write was not found');
MongoRunner.stopMongod(conn);
})();