-
Type: Bug
-
Resolution: Done
-
Priority: Major - P3
-
None
-
Affects Version/s: 2.4.11, 2.6.8, 3.0.1
-
Component/s: Replication
-
None
-
ALL
-
Scenario:
Create RS with two data nodes (A,B) and an arbiter.
Give A priority 2, B priority 1 -> A becomes primary
Kill A process -> B (with lower priority) becomes primary
Delete all data files from A
Connect to B and add data:
for (var i = 1; i <= 200000; i++) { db.testData.insert( { x : i } ) } db.copyDatabase("test", "test1” ) db.copyDatabase("test", "test2” ) etc.
The idea is to make initial sync take some time.
Start A process as follows:
mongod --replSet replset --dbpath <path> --logpath <path>/mongod.log --port <port> --logappend --fork ; mongo --port <port> --eval "printjson(rs.initiate())"
This will start A, which will come up and start initial sync. rs.initiate() command will run while initial sync is taking place. Command should fail, but it will succeed.
mongod --replSet replset --dbpath /Users/ericsommer/data/301rs/replset/rs2/db --logpath /Users/ericsommer/data/301rs/replset/rs2/mongod.log --port 30001 --logappend --fork ; mongo --port 30001 --eval "printjson(rs.initiate())" about to fork child process, waiting until server is ready for connections. forked process: 7005 child process started successfully, parent exiting MongoDB shell version: 3.0.1 connecting to: 127.0.0.1:30001/test { "info2" : "no configuration explicitly specified -- making one", "me" : "Erics-MBP.home:30001", "ok" : 1 }
Command doesn’t succeed if:
- mongod reaches secondary state before rs.initiate() is called
- with default priorities
See attached log mongodb.debug.log from node A.
Customer found bug in 2.4.11. Tested with 3.0.1 and 2.6.8 – same behavior.