[SERVER-24095] Set a feature bit in the KVCatalog when tracking path-level multikey info becomes enabled for an index Created: 08/May/16  Updated: 06/Oct/17  Resolved: 31/May/16

Status: Closed
Project: Core Server
Component/s: Storage
Affects Version/s: None
Fix Version/s: 3.3.8

Type: Task Priority: Major - P3
Reporter: Max Hirschhorn Assignee: Max Hirschhorn
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
depends on SERVER-22726 Extend the KVCatalog to store path-le... Closed
depends on SERVER-23116 Add versioning scheme to the KVCatalo... Closed
Documented
is documented by DOCS-10543 Docs for SERVER-24095: Set a feature ... Closed
Gantt Dependency
has to be done after SERVER-23117 Remove path-level multikey informatio... Closed
Related
related to SERVER-31444 Queries against multikey trailing fie... Closed
related to SERVER-23761 Prevent users from downgrading 3.4=>3... Closed
Backwards Compatibility: Major Change
Sprint: Query 15 (06/03/16)
Participants:

 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.



 Comments   
Comment by Githook User [ 31/May/16 ]

Author:

{u'username': u'visemet', u'name': u'Max Hirschhorn', u'email': u'max.hirschhorn@mongodb.com'}

Message: SERVER-24095 Set feature bit for path-level multikey tracking.

If no feature has already been marked as in-use, then creating a new
index will also cause a feature document to be inserted into the
KVCatalog. Versions of MongoDB earlier than commit
f242be85e80794d009eb151c9ea2184ceb8d3d81 will fail to start up as a
result.
Branch: master
https://github.com/mongodb/mongo/commit/418cd1ed69f9185a1f34a37dedf4562b7957d0bc

Generated at Thu Feb 08 04:05:21 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.