Live-lock in eviction due to incorrect update chain iteration

XMLWordPrintableJSON

    • Storage Engines, Storage Engines - Foundations
    • SE Foundations - 2025-08-01
    • 5

      Eviction could live-lock in __rec_row_garbage_collect_fixup_update_list when the update chain’s head was aborted. The loop:

      for (upd = first_upd; upd != NULL && upd->txnid == WT_TXN_ABORTED; upd = first_upd->next)
      kept rechecking first_upd->next instead of advancing with upd->next, causing infinite retries.
      

      kept rechecking first_upd->next instead of advancing with upd->next, causing infinite retries.

      Fix:
      Change to -

      for (upd = first_upd; upd != NULL && upd->txnid == WT_TXN_ABORTED; upd = upd->next)
      

      Impact:
      Prevents eviction from stalling.

              Assignee:
              Sid Mahajan
              Reporter:
              Sid Mahajan
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: