[SERVER-20851] Fatal Assertion 28545 during downgrade of a replica set from 3.1.9 to 3.0.6 Created: 09/Oct/15  Updated: 09/Oct/15  Resolved: 09/Oct/15

Status: Closed
Project: Core Server
Component/s: Replication
Affects Version/s: 3.1.9
Fix Version/s: None

Type: Bug Priority: Major - P3
Reporter: Timothy Olsen (Inactive) Assignee: Eric Milkie
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
Related
Operating System: ALL
Steps To Reproduce:
  1. Set up a 3.1.9 replica set
  2. Stop one of the mongods
  3. Start up the mongod using mongodb 3.0.6 (set the storageEngine to wiredTiger)
  4. Watch mongod crash
Participants:

 Description   

During downgrade of a replica set from 3.1.9 to 3.0.6, I see "Fatal Assertion 28545" upon starting up a node with version 3.0.6. The log file hints that mongod 3.0.6 does not like the protocolVersion field in the replica set configuration.

Log file:

/tmp/mms-automation//test/versions/mongodb-osx-x86_64-3.0.6/bin/mongod --dbpath=db2 --replSet=rs0 --port=27018 --storageEngine=wiredTiger
2015-10-09T13:46:03.810-0400 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=8G,session_max=20000,eviction=(threads_max=4),statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2015-10-09T13:46:04.342-0400 I STORAGE  [initandlisten] Starting WiredTigerRecordStoreThread local.oplog.rs
2015-10-09T13:46:04.345-0400 I CONTROL  [initandlisten] MongoDB starting : pid=89346 port=27018 dbpath=db2 64-bit host=neurofunk.local
2015-10-09T13:46:04.345-0400 I CONTROL  [initandlisten] 
2015-10-09T13:46:04.345-0400 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
2015-10-09T13:46:04.345-0400 I CONTROL  [initandlisten] db version v3.0.6
2015-10-09T13:46:04.345-0400 I CONTROL  [initandlisten] git version: 1ef45a23a4c5e3480ac919b28afcba3c615488f2
2015-10-09T13:46:04.345-0400 I CONTROL  [initandlisten] build info: Darwin mci-osx108-7.build.10gen.cc 12.5.0 Darwin Kernel Version 12.5.0: Sun Sep 29 13:33:47 PDT 2013; root:xnu-2050.48.12~1/RELEASE_X86_64 x86_64 BOOST_LIB_VERSION=1_49
2015-10-09T13:46:04.345-0400 I CONTROL  [initandlisten] allocator: system
2015-10-09T13:46:04.345-0400 I CONTROL  [initandlisten] options: { net: { port: 27018 }, replication: { replSet: "rs0" }, storage: { dbPath: "db2", engine: "wiredTiger" } }
2015-10-09T13:46:04.346-0400 E REPL     [initandlisten] Locally stored replica set configuration does not parse; See http://www.mongodb.org/dochub/core/recover-replica-set-from-invalid-config for information on how to recover from this. Got "BadValue Unexpected field protocolVersion in replica set configuration" while parsing { _id: "rs0", version: 3, protocolVersion: 1, members: [ { _id: 0, host: "neurofunk.local:27017", arbiterOnly: false, buildIndexes: true, hidden: false, priority: 1.0, tags: {}, slaveDelay: 0, votes: 1 }, { _id: 1, host: "neurofunk.local:27018", arbiterOnly: false, buildIndexes: true, hidden: false, priority: 1.0, tags: {}, slaveDelay: 0, votes: 1 }, { _id: 2, host: "neurofunk.local:27019", arbiterOnly: false, buildIndexes: true, hidden: false, priority: 1.0, tags: {}, slaveDelay: 0, votes: 1 } ], settings: { chainingAllowed: true, heartbeatIntervalMillis: 2000, heartbeatTimeoutSecs: 10, electionTimeoutMillis: 10000, electionTimeoutOffsetLimitMillis: 2000, getLastErrorModes: {}, getLastErrorDefaults: { w: 1, wtimeout: 0 } } }
2015-10-09T13:46:04.346-0400 I -        [initandlisten] Fatal Assertion 28545
2015-10-09T13:46:04.346-0400 I -        [initandlisten] 
 
***aborting after fassert() failure



 Comments   
Comment by Eric Milkie [ 09/Oct/15 ]

Let me know if you still have issues after that.

Comment by Timothy Olsen (Inactive) [ 09/Oct/15 ]

ok, I'll modify automation to do that when downgrading from 3.2 -> 3.0

Comment by Eric Milkie [ 09/Oct/15 ]

Yes, you are not allowed to downgrade any node in a set without first reconfiguring the set to a protocolVersion field with a value of 0.

Generated at Thu Feb 08 03:55:29 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.