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

    XMLWordPrintable

    Details

    • Type: Task
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 3.3.8
    • Component/s: Storage
    • Labels:
      None

      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

            Activity

              People

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

                Dates

                Created:
                Updated:
                Resolved: