Details
-
Bug
-
Resolution: Done
-
Major - P3
-
None
-
2.4.11, 2.6.8, 3.0.1
-
None
-
ALL
-
Description
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.