This change makes it so that mongod will set the first "repairable" feature bit (named kPathLevelMultikeyTracking) to indicate that at least one index in the data files supports path-level multikey tracking. If no feature has already been marked as in-use, then creating a new index on 3.3.7+ will also cause a feature document to be inserted into the KVCatalog.
When attempting to downgrade to a version of MongoDB earlier than 3.2.7 (i.e. a mongod without the changes from SERVER-23117), the mongod will fail to start with the following message:
2016-05-31T13:18:10.886-0400 I CONTROL [initandlisten] db version v3.2.1 ... 2016-05-31T13:18:11.090-0400 I - [initandlisten] Assertion: 13111:wrong type for field (ns) 10 != 2 2016-05-31T13:18:11.099-0400 I CONTROL [initandlisten] 0x12cf722 0x127ac14 0x12667a8 0x126685c 0xf9d3de 0xfa7eba 0x103f5d5 0xf679a8 0x93bc91 0x9403b9 0x7f8319052ec5 0x939829 ----- BEGIN BACKTRACE ----- {"backtrace":[{"b":"400000","o":"ECF722"},{"b":"400000","o":"E7AC14"},{"b":"400000","o":"E667A8"},{"b":"400000","o":"E6685C"},{"b":"400000","o":"B9D3DE"},{"b":"400000","o":"BA7EBA"},{"b":"400000","o":"C3F5D5"},{"b":"400000","o":"B679A8"},{"b":"400000","o":"53BC91"},{"b":"400000","o":"5403B9"},{"b":"7F8319031000","o":"21EC5"},{"b":"400000","o":"539829"}],"processInfo":{ "mongodbVersion" : "3.2.1", "gitVersion" : "a14d55980c2cdc565d4704a7e3ad37e4e535c1b2", "compiledModules" : [], "uname" : { "sysname" : "Linux", "release" : "3.13.0-37-generic", "version" : "#64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014", "machine" : "x86_64" }, "somap" : [ { "elfType" : 2, "b" : "400000" }, { "b" : "7FFF388FE000", "elfType" : 3 }, { "b" : "7F831A038000", "path" : "/lib/x86_64-linux-gnu/librt.so.1", "elfType" : 3 }, { "b" : "7F8319E34000", "path" : "/lib/x86_64-linux-gnu/libdl.so.2", "elfType" : 3 }, { "b" : "7F8319B30000", "path" : "/usr/lib/x86_64-linux-gnu/libstdc++.so.6", "elfType" : 3 }, { "b" : "7F831982A000", "path" : "/lib/x86_64-linux-gnu/libm.so.6", "elfType" : 3 }, { "b" : "7F8319614000", "path" : "/lib/x86_64-linux-gnu/libgcc_s.so.1", "elfType" : 3 }, { "b" : "7F83193F6000", "path" : "/lib/x86_64-linux-gnu/libpthread.so.0", "elfType" : 3 }, { "b" : "7F8319031000", "path" : "/lib/x86_64-linux-gnu/libc.so.6", "elfType" : 3 }, { "b" : "7F831A240000", "path" : "/lib64/ld-linux-x86-64.so.2", "elfType" : 3 } ] }} mongod-3.2.1(_ZN5mongo15printStackTraceERSo+0x32) [0x12cf722] mongod-3.2.1(_ZN5mongo10logContextEPKc+0x134) [0x127ac14] mongod-3.2.1(_ZN5mongo11msgassertedEiPKc+0x88) [0x12667a8] mongod-3.2.1(+0xE6685C) [0x126685c] mongod-3.2.1(_ZN5mongo9KVCatalog4initEPNS_16OperationContextE+0x31E) [0xf9d3de] mongod-3.2.1(_ZN5mongo15KVStorageEngineC1EPNS_8KVEngineERKNS_22KVStorageEngineOptionsE+0x51A) [0xfa7eba] mongod-3.2.1(+0xC3F5D5) [0x103f5d5] mongod-3.2.1(_ZN5mongo20ServiceContextMongoD29initializeGlobalStorageEngineEv+0x588) [0xf679a8] mongod-3.2.1(_ZN5mongo13initAndListenEi+0x321) [0x93bc91] mongod-3.2.1(main+0x149) [0x9403b9] libc.so.6(__libc_start_main+0xF5) [0x7f8319052ec5] mongod-3.2.1(+0x539829) [0x939829] ----- END BACKTRACE ----- 2016-05-31T13:18:11.100-0400 I STORAGE [initandlisten] WiredTigerKVEngine shutting down 2016-05-31T13:18:11.198-0400 I STORAGE [initandlisten] exception in initAndListen: 13111 wrong type for field (ns) 10 != 2, terminating 2016-05-31T13:18:11.198-0400 I CONTROL [initandlisten] dbexit: rc: 100
The feature bit in the KVCatalog should only be set when a new index is being created on 3.3+. The changes in this ticket will make it so that it isn't possible to downgrade to a version older of MongoDB than the fixVersion of SERVER-23117.
- depends on
-
SERVER-22726 Extend the KVCatalog to store path-level multikeyness info
- Closed
-
SERVER-23116 Add versioning scheme to the KVCatalog to handle upgrade/downgrade with new 3.4 features
- Closed
- has to be done after
-
SERVER-23117 Remove path-level multikey information from KVCatalog when downgrading to 3.2
- Closed
- related to
-
SERVER-31444 Queries against multikey trailing fields of a compound 2d index are incorrectly covered, leading to incorrect results
- Closed
-
SERVER-23761 Prevent users from downgrading 3.4=>3.2 if any collection has an index with a non-default collation
- Closed