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

A RecoveryUnit::ReadSource of "no timestamp" should be distinguishable from the default of kNone

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 4.0.0-rc6, 4.1.1
    • Affects Version/s: None
    • Component/s: Storage
    • Labels:
    • Fully Compatible
    • ALL
    • v4.0
    • Storage NYC 2018-06-18

      The default ReadSource on a RecoveryUnit is kNone, which implies reads occur without a timestamp. In some cases, specifically for readers like FTDC which read without a timestamp, it is unknowable whether the ReadSource was left unset or set explicitly to kNone.

      This would be useful in AutoGetCollectionForRead, where we check if ShouldNotConflictWithSecondaryBatchApplicationBlock is set. If it is, we implicitly assume the reader was willing to read without a timestamp, but this block can also get set when acquiring multiple different collection locks in the same scope. We should depend on information in the RecoveryUnit, not the Locker for whether or not to read with a timestamp.

      This work can be either

      • add a default enumeration state that is distinguishable from kNone
      • make the field a boost::optional

      Both options should read without a timestamp in WiredTigerRecoveryUnit.

            Assignee:
            xiangyu.yao@mongodb.com Xiangyu Yao (Inactive)
            Reporter:
            louis.williams@mongodb.com Louis Williams
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: