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

Internal operations should handle TemporarilyUnavailable and TransactionTooLargeForCache exceptions

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 7.2.0-rc0, 7.0.2, 7.1.0-rc2
    • Affects Version/s: None
    • Component/s: None
    • None
    • Storage Execution
    • Fully Compatible
    • ALL
    • v7.1, v7.0, v6.0
    • 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

      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.

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

              Created:
              Updated:
              Resolved: