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

Do not suppress WriteConflictExceptions in debug builds when checking IndexCatalog::numIndexesTotal

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 4.3.3
    • Affects Version/s: None
    • Component/s: None
    • Fully Compatible
    • ALL
    • Execution Team 2020-01-13, Execution Team 2019-12-30
    • 17

      In SERVER-42123, we started suppressing WriteConflicts in debug builds when calling numIndexesTotal(), which reads from the durable catalog.

      Unfortunately it is not correct to ignore WriteConflicts. The storage engine may choose to abort a transaction at any time, often due to cache pressure. When the storage engine does abort an operation, it throws a WriteConflictException. If an operation ignores this error, it will continue to commit the operation instead. This will lead to the following error from WiredTiger:

      WiredTiger error (22) [1573582080:566402][25006:0x7f3c19192700], WT_SESSION.commit_transaction: __session_commit_transaction, 1649: failed transaction requires rollback: oldest transaction ID rolled back for eviction
      

      We should solve the original problem described in SERVER-42123 in a different way. This may involve reverting the original code.

            Assignee:
            milkie@mongodb.com Eric Milkie
            Reporter:
            louis.williams@mongodb.com Louis Williams
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: