The JournalFlusher should use a WRITE_CONFLICT_RETRY_ONLY YieldPolicy for its oplog read operation

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Fixed
    • Priority: Major - P3
    • 4.7.0
    • Affects Version/s: None
    • Component/s: Storage
    • None
    • Fully Compatible
    • ALL
    • Execution Team 2020-05-04
    • 23
    • None
    • 3
    • None
    • None
    • None
    • None
    • None
    • None

      The JournalFlusher can hit an EBUSY error while trying to open a WT cursor when the validate cmd is doing WT_SESSION::verify on the same collection, local.oplog.rs. Per this WT documentation, https://source.wiredtiger.com/3.1.0/error_handling.html, indicating that WT_SESSION::verify can run into EBUSY if unable to gain exclusive access, and apparently vice versa for trying to open a cursor while WT_SESSION::verify is running.

      Our query code will normally turn WCEs into yields, here, but the JournalFlusher is using an query execution plan explicitly with the NO_YIELD setting here.

      The WRITE_CONFLICT_RETRY_ONLY policy indicates that it will retry on WriteConflictExceptions without releasing locks. It is not desirable to yield locks for the JournalFlusher's oplog query per this comment on the JournalFlusher's lock acquisitions.

            Assignee:
            Dianna Hohensee (Inactive)
            Reporter:
            Dianna Hohensee (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: