Details
Description
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.
Attachments
Issue Links
- 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
-
- is documented by
-
DOCS-10543 Docs for SERVER-24095: Set a feature bit in the KVCatalog when tracking path-level multikey info becomes enabled for an index
-
- 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
-