blob: 92f0453b94116aa585edafd8e0fbcefbe6e22b8c (
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
42
43
44
45
46
47
|
/**
* Test that mongos times out when the config server replica set only contains nodes that
* are behind the majority opTime.
*/
(function() {
var st = new ShardingTest({shards: 1});
var configSecondaryList = st.configRS.getSecondaries();
var configSecondaryToKill = configSecondaryList[0];
var delayedConfigSecondary = configSecondaryList[1];
delayedConfigSecondary.getDB('admin').adminCommand(
{configureFailPoint: 'rsSyncApplyStop', mode: 'alwaysOn'});
var testDB = st.s.getDB('test');
testDB.adminCommand({enableSharding: 'test'});
testDB.adminCommand({shardCollection: 'test.user', key: {_id: 1}});
testDB.user.insert({_id: 1});
st.configRS.stopMaster();
MongoRunner.stopMongod(configSecondaryToKill.port);
// Clears all cached info so mongos will be forced to query from the config.
st.s.adminCommand({flushRouterConfig: 1});
var exception = assert.throws(function() {
testDB.user.findOne();
});
assert.eq(ErrorCodes.ExceededTimeLimit, exception.code);
var msg = 'Command on database config timed out waiting for read concern to be satisfied.';
assert.soon(function() {
var logMessages =
assert.commandWorked(delayedConfigSecondary.adminCommand({getLog: 'global'})).log;
for (var i = 0; i < logMessages.length; i++) {
if (logMessages[i].indexOf(msg) != -1) {
return true;
}
}
return false;
}, 'Did not see any log entries containing the following message: ' + msg, 60000, 300);
st.stop();
}());
|