Uploaded image for project: 'WiredTiger'
  1. WiredTiger
  2. WT-3878

Iteration can lose its position when updating a limbo page

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 3.6.3, 3.7.2, WT3.1.0
    • Component/s: None
    • Labels:
      None
    • Sprint:
      Storage 2018-01-29, Storage 2018-02-12
    • Backport Requested:
      v3.6

      Description

      I think there's a problem with cursor iteration and limbo pages.

      If we have a pinned page based on a cursor iteration, we discard the pinned page under some circumstances (the page is flagged for forced eviction or the page is in the WT_REF_LIMBO state). If we discard the pinned page, the actual key/value entry can be physically removed underneath the cursor, and we have lost the cursor's position. The next iteration will start at the beginning of the table, which is pretty bad.

      We could skip the forced eviction check when using an iterating cursor, but limbo pages aren't so easy. I think we either have to always instantiate pages being read for an iterating cursor, or somehow swap the instantiated page into place without allowing entries to be removed (which sounds impossible).

      Michael Cahill, am I missing something?

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              keith.bostic Keith Bostic
              Reporter:
              keith.bostic Keith Bostic
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: