Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-24095

Set a feature bit in the KVCatalog when tracking path-level multikey info becomes enabled for an index

    • Type: Icon: Task Task
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • 3.3.8
    • Affects Version/s: None
    • Component/s: Storage
    • None
    • Major Change
    • Query 15 (06/03/16)

      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.

            Assignee:
            max.hirschhorn@mongodb.com Max Hirschhorn
            Reporter:
            max.hirschhorn@mongodb.com Max Hirschhorn
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: