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

Cleanup and bugs in __rec_append_orig_value

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: In Progress
    • Priority: Major - P3
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: 4.5 Required
    • Component/s: None
    • Labels:
      None
    • Story Points:
      5
    • Sprint:
      Storage - Ra 2020-06-29, Storage - Ra 2020-07-13

      Description

      In rec_append_orig_value, we don't check aborted updates and we can return on aborted updates. This may have something to do with WT-6479 but unlikely.

              /*
               * Prepared updates should already be in the update list, add the original update to the
               * list only when the prepared update is a tombstone.
               */
              if (unpack->tw.prepare && upd->type != WT_UPDATE_TOMBSTONE)
                  return (0);
      

      Also there are some assumptions no longer true after all the code changes we have, i.e, like

      if (unpack->tw.start_ts == upd->start_ts && unpack->tw.start_txn == upd->txnid &&
                upd->type != WT_UPDATE_TOMBSTONE)
      

      The onpage time window may not have the same transaction ids and timestamp as on the update chain as we may write 0 to the time window.

      So the following assert is also wrong:

      WT_ASSERT(session, unpack->tw.prepare || (unpack->tw.stop_ts == oldest_upd->start_ts &&
                                                             unpack->tw.stop_txn == oldest_upd->txnid));
      

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              chenhao.qu Chenhao Qu
              Reporter:
              chenhao.qu Chenhao Qu
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated: