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

Internal operations should handle TemporarilyUnavailable and TransactionTooLargeForCache exceptions

    XMLWordPrintableJSON

Details

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major - P3 Major - P3
    • 7.2.0-rc0, 7.0.2, 7.1.0-rc2
    • None
    • None
    • None
    • Storage Execution
    • Fully Compatible
    • ALL
    • v7.1
    • Execution EMEA Team 2023-06-26, Execution EMEA Team 2023-07-10, Execution EMEA Team 2023-07-24, Execution EMEA Team 2023-09-04
    • 120

    Description

      Unlike user operations which transparently handle both WriteConflictException (WCE) and (TemprorarilyUnavailableException) TUE via the writeConflictRetry helper, internal operations tend to use custom code that handles WCE's only; oplog truncation is an example. Excerpt from an internal stress test:

      {"t":{"$date":"2023-05-12T18:06:13.149+00:00"},"s":"F",  "c":"STORAGE",  "id":6761100, "ctx":"OplogCapMaintainerThread-local.oplog.rs","msg":"Error in OplogCapMaintainerThread","attr":{"error":{"code":365,"codeName":"TemporarilyUnavailable","errmsg":"-31800: oldest pinned transaction ID rolled back for eviction"}}}
      

      We should audit the code for missing TUE handling and consider adopting the writeConflictRetry helper or implementing an equivalent one for internal operations.

      Attachments

        Activity

          People

            josef.ahmad@mongodb.com Josef Ahmad
            josef.ahmad@mongodb.com Josef Ahmad
            Votes:
            0 Vote for this issue
            Watchers:
            10 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: