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

Timestamps can be set on transactions that don't trigger a visibility refresh

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 3.6.0-rc2
    • Affects Version/s: None
    • Component/s: Storage
    • Labels:
      None
    • Fully Compatible
    • ALL
    • Storage 2017-11-13
    • 0

      Currently the code expects all timestamped transactions, which have the potential to update visibility, to call WiredTigerOplogManager::triggerJournalFlush. There are code paths that can set timestamps but not result in calling this method.

      Some paths forward to consider include:

      1. A call to WiredTigerRecoveryUnit::setTimestamp immediately installs the journal flushing "change". One drawback to this is that some recovery units have their timestamp set multiple times. Care should be taken to not create multiple unnecessary "changes".
      2. Remove OplogInsertChange and have WiredTigerOplogManager::triggerJournalFlush be called directly by all timestamped recovery units before returning from _txnClose.
      3. Relax the WiredTigerOplogManager::_oplogJournalThreadLoop conditions to run a refresh loop. E.g: always run an iteration every 5 seconds even if it hasn't been notified.

            Assignee:
            daniel.gottlieb@mongodb.com Daniel Gottlieb (Inactive)
            Reporter:
            daniel.gottlieb@mongodb.com Daniel Gottlieb (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: