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

Birthmark records can be read as normal updates if reads race with checkpoints

    • 13
    • Storage Engines 2019-10-21, Storage Engines 2019-11-04, Storage Engines 2019-11-18, Storage Engines 2019-12-02, Storage Engines 2019-12-16, Storage Engines 2019-12-30, Storage Engines 2020-01-13
    • v4.2, v4.0, v3.6

      Summary:
          Fix a race in reconciliation that could lead to the return of an incorrect value.

      A snapshot-isolation search mismatch failure was captured by the stress sanitizer job against mongodb-4.2 branch on tinderbox. 

      http://build.wiredtiger.com:8080/job/wiredtiger-test-format-stress-sanitizer-old-branches/1674/

      ++ nice ./t
      snapshot-isolation error: Dumping page to RUNDIR/pagedump
      snapshot-isolation 0000042405.00/opqrstuvwxyzabcdefg search mismatch
      expected {0000042405}
         found {}
      t: process 8818
      
      (...)
      
      t: FAILED: snapshot-isolation: 0000042405.00/opqrstuvwxyzabcdefg search mismatch
      process aborting
      /tmp/jenkins4811282508003293818.sh: line 37:  8818 Aborted                 (core dumped) nice ./t
      + cleanup
      + status=134 

      The stack trace:

      (gdb) bt
      #0  0x00007f06087a19fb in raise () from /lib64/libc.so.6
      #1  0x00007f06087a3800 in abort () from /lib64/libc.so.6
      #2  0x0000000000546d67 in testutil_die (e=0, fmt=0xc735e0 <.str.20> "snapshot-isolation: %.*s search mismatch") at ../../../test/utility/misc.c:66
      #3  0x0000000000531554 in snap_verify (cursor=0x61800000dc80, tinfo=0x62f00009a400, snap=0x62f0000a3d90) at ../../../test/format/snap.c:220
      #4  0x000000000052fbc7 in snap_repeat_txn (cursor=0x61800000dc80, tinfo=0x62f00009a400) at ../../../test/format/snap.c:388
      #5  0x000000000051edeb in ops (arg=0x62f00009a400) at ../../../test/format/ops.c:949
      #6  0x00000000004dde53 in __asan::AsanThread::ThreadStart(unsigned long, __sanitizer::atomic_uintptr_t*) ()
      #7  0x00007f06096a736d in start_thread () from /lib64/libpthread.so.0
      #8  0x00007f060887bb4f in clone () from /lib64/libc.so.6 

      The configuration:

      ############################################
      #  RUN PARAMETERS
      ############################################
      abort=0
      alter=0
      assert_commit_timestamp=0
      assert_read_timestamp=0
      auto_throttle=1
      backups=0
      bitcnt=4
      bloom=1
      bloom_bit_count=38
      bloom_hash_count=9
      bloom_oldest=0
      cache=70
      cache_minimum=0
      checkpoints=on
      checkpoint_log_size=52
      checkpoint_wait=27
      checksum=uncompressed
      chunk_size=7
      compaction=0
      compression=none
      data_extend=0
      data_source=table
      delete_pct=2
      dictionary=0
      direct_io=0
      encryption=none
      evict_max=1
      file_type=row-store
      firstfit=0
      huffman_key=0
      huffman_value=0
      independent_thread_rng=1
      in_memory=0
      insert_pct=3
      internal_key_truncation=1
      internal_page_max=9
      isolation=snapshot
      key_gap=3
      key_max=35
      key_min=32
      leaf_page_max=12
      leak_memory=0
      logging=0
      logging_archive=0
      logging_compression=none
      logging_file_max=403863
      logging_prealloc=1
      long_running_txn=0
      lsm_worker_threads=4
      memory_page_max=7
      merge_max=9
      mmap=1
      modify_pct=50
      ops=100000
      prefix_compression=1
      prefix_compression_min=6
      prepare=0
      quiet=1
      read_pct=34
      rebalance=1
      repeat_data_pct=68
      reverse=0
      rows=100000
      runs=1
      salvage=1
      split_pct=60
      statistics=1
      statistics_server=0
      threads=5
      timer=360
      timing_stress_aggressive_sweep=0
      timing_stress_checkpoint=0
      timing_stress_lookaside_sweep=0
      timing_stress_split_1=0
      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=100
      truncate=1
      value_max=1087
      value_min=8
      verify=1
      wiredtiger_config=
      write_pct=11
      ############################################ 

        1. 5119.debug.diff
          9 kB
        2. 5119.Dec12.diff
          7 kB
        3. 5119.Dec16.diff
          17 kB
        4. 5119.Nov12.diff
          21 kB
        5. 5119.Nov18.diff
          22 kB
        6. 5119.Nov5.diff
          12 kB

            Assignee:
            keith.bostic@mongodb.com Keith Bostic (Inactive)
            Reporter:
            luke.chen@mongodb.com Luke Chen
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: