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

More prepared updates processed than accounted for

    • Type: Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Labels:
      None

      The following test/format configuration hit the assert:
      WT_ASSERT(session, txn->multi_update_count > 0);

      ############################################
      #  RUN PARAMETERS
      ############################################
      abort=0
      alter=0
      auto_throttle=1
      backups=0
      bitcnt=7
      bloom=1
      bloom_bit_count=59
      bloom_hash_count=32
      bloom_oldest=0
      cache=120
      cache_minimum=20
      checkpoints=on
      checkpoint_log_size=164
      checkpoint_wait=87
      checksum=uncompressed
      chunk_size=9
      compaction=0
      compression=none
      data_extend=0
      data_source=table
      delete_pct=18
      dictionary=1
      direct_io=0
      encryption=none
      evict_max=4
      file_type=row-store
      firstfit=0
      huffman_key=0
      huffman_value=0
      independent_thread_rng=0
      in_memory=0
      insert_pct=7
      internal_key_truncation=1
      internal_page_max=15
      isolation=random
      key_gap=2
      key_max=102
      key_min=14
      leaf_page_max=13
      leak_memory=0
      logging=0
      logging_archive=1
      logging_compression=none
      logging_file_max=422462
      logging_prealloc=0
      long_running_txn=0
      lsm_worker_threads=4
      memory_page_max=3
      merge_max=12
      mmap=1
      modify_pct=16
      ops=0
      prefix_compression=1
      prefix_compression_min=6
      prepare=1
      quiet=1
      read_pct=43
      rebalance=1
      repeat_data_pct=74
      reverse=0
      rows=1000000
      runs=1
      salvage=1
      split_pct=86
      statistics=0
      statistics_server=0
      threads=20
      timer=4
      timing_stress_checkpoint=0
      timing_stress_lookaside_sweep=0
      timing_stress_split_1=1
      timing_stress_split_2=0
      timing_stress_split_3=0
      timing_stress_split_4=0
      timing_stress_split_5=0
      timing_stress_split_6=0
      timing_stress_split_7=0
      timing_stress_split_8=0
      transaction_timestamps=1
      transaction-frequency=71
      truncate=1
      value_max=3944
      value_min=10
      verify=1
      wiredtiger_config=
      write_pct=16
      ############################################
      
      (gdb) bt
      #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
      #1  0x00007ff694388f5d in __GI_abort () at abort.c:90
      #2  0x000000000046323f in __wt_abort (session=0x7ff695375ad0) at ../src/os_common/os_abort.c:32
      #3  0x00000000004cd877 in __wt_txn_resolve_prepared_op (session=0x7ff695375ad0, op=0x7ff634ba7890, commit=true) at ../src/include/txn.i:255
      #4  0x00000000004cceaa in __wt_txn_commit (session=0x7ff695375ad0, cfg=0x7ff668ff68c0) at ../src/txn/txn.c:839
      #5  0x00000000004a8457 in __session_commit_transaction (wt_session=0x7ff695375ad0, config=0x0) at ../src/session/session_api.c:1660
      #6  0x000000000040b95f in commit_transaction (tinfo=0x50eb210, session=0x7ff695375ad0) at ../../../test/format/ops.c:582
      #7  0x000000000040afa6 in ops (arg=0x50eb210) at ../../../test/format/ops.c:1082
      #8  0x00007ff694b5c7fc in start_thread (arg=0x7ff668ff9700) at pthread_create.c:465
      #9  0x00007ff694464b5f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
      (gdb) f 3
      #3  0x00000000004cd877 in __wt_txn_resolve_prepared_op (session=0x7ff695375ad0, op=0x7ff634ba7890, commit=true) at ../src/include/txn.i:255
      warning: Source file is more recent than executable.
      255                             WT_ASSERT(session, txn->multi_update_count > 0);
      (gdb) l
      250                      * during the resolution of a previous update belonging to the
      251                      * same key. To ascertain transaction tracks multiple extra
      252                      * updates processed in resolution of an transaction operation.
      253                      */
      254                     if (upd->prepare_state == WT_PREPARE_RESOLVED) {
      255                             WT_ASSERT(session, txn->multi_update_count > 0);
      256                             --txn->multi_update_count;
      257                     } else if (upd != op->u.op_upd)
      258                             ++txn->multi_update_count;
      259     #endif
      (gdb) p txn->multi_update_count
      $1 = 0
      

            Assignee:
            backlog-server-storage-engines [DO NOT USE] Backlog - Storage Engines Team
            Reporter:
            sulabh.mahajan@mongodb.com Sulabh Mahajan
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: