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

format: discarding not-yet-globally visible update

    • Type: Icon: Task Task
    • Resolution: Done
    • WT2.5.1
    • Affects Version/s: None
    • Component/s: None
    • Labels:

      I'm seeing a WT_UPDATE being discarded that's not yet globally visible, and it's fairly reproducible (within 20 iterations on pixiebob).

      cursor.update: src/btree/bt_discard.c, 420: F_ISSET(session, WT_SESSION_DISCARD_FORCE) ||
      upd->txnid == WT_TXN_ABORTED || __wt_txn_visible_all(session, upd->txnid)
      cursor.update: aborting WiredTiger library
      

      Here's the stack:

      WT-5  0x000000000047b89c in __wt_assert (session=0x8030332c0, error=0, 
          file_name=0x543050 "src/btree/bt_discard.c", line_number=418, 
          fmt=0x53a997 "%s") at src/support/err.c:448
      WT-6  0x0000000000499b98 in __free_update_list (session=0x8030332c0, 
          upd=0x807ce94f0) at src/btree/bt_discard.c:415
      WT-7  0x0000000000499c6e in __free_skip_list (session=0x8030332c0, 
          ins=0x803d48f10) at src/btree/bt_discard.c:375
      WT-8  0x00000000004999e3 in __free_skip_array (session=0x8030332c0, 
          head_arg=0x803d5b280, entries=13) at src/btree/bt_discard.c:356
      WT-9  0x0000000000499215 in __free_page_row_leaf (session=0x8030332c0, 
          page=0x803c68840) at src/btree/bt_discard.c:332
      WT-10 0x000000000049893a in __wt_page_out (session=0x8030332c0, 
          pagep=0x8033ff4c0) at src/btree/bt_discard.c:123
      WT-11 0x000000000049860f in __wt_ref_out (session=0x8030332c0, ref=0x8033ff4c0)
          at src/btree/bt_discard.c:33
      WT-12 0x000000000042e816 in __evict_page_dirty_update (session=0x8030332c0, 
          ref=0x8033ff4c0, exclusive=0) at src/evict/evict_page.c:234
      WT-13 0x000000000042d895 in __wt_evict (session=0x8030332c0, ref=0x8033ff4c0, 
          exclusive=0) at src/evict/evict_page.c:109
      WT-14 0x000000000042a11c in __wt_evict_page (session=0x8030332c0, 
          ref=0x8033ff4c0) at src/evict/evict_lru.c:630
      WT-15 0x000000000042a7cd in __wt_evict_lru_page (session=0x8030332c0, 
          is_server=1) at src/evict/evict_lru.c:1307
      WT-16 0x000000000042b672 in __evict_lru_pages (session=0x8030332c0, is_server=1)
          at src/evict/evict_lru.c:715
      WT-17 0x000000000042c16a in __evict_server_work (session=0x8030332c0)
          at src/evict/evict_lru.c:826
      (gdb) frame 6
      WT-6  0x0000000000499b98 in __free_update_list (session=0x803034340, 
          upd=0x807588430) at src/btree/bt_discard.c:415
      415			WT_ASSERT(session,
      (gdb) l
      410	{
      411		WT_UPDATE *next;
      412	
      413		for (; upd != NULL; upd = next) {
      414			/* Everything we free should be visible to everyone. */
      415			WT_ASSERT(session,
      416			    F_ISSET(session, WT_SESSION_DISCARD_FORCE) ||
      417			    upd->txnid == WT_TXN_ABORTED ||
      418			    __wt_txn_visible_all(session, upd->txnid));
      419	
      (gdb) p upd->txnid
      $1 = 232541
      (gdb) p ((WT_CONNECTION_IMPL *)(session)->iface.connection)->txn_global.oldest_id
      $2 = 229995
      

      Here's the CONFIG:

      ############################################
      #  RUN PARAMETERS
      ############################################
      abort=0
      auto_throttle=1
      firstfit=1
      bitcnt=2
      bloom=1
      bloom_bit_count=47
      bloom_hash_count=11
      bloom_oldest=0
      cache=10
      checkpoints=1
      checksum=uncompressed
      chunk_size=9
      compaction=1
      compression=zlib
      data_extend=0
      data_source=table
      delete_pct=11
      dictionary=0
      evict_max=1
      file_type=row-store
      backups=0
      huffman_key=0
      huffman_value=0
      insert_pct=29
      internal_key_truncation=1
      internal_page_max=9
      isolation=read-uncommitted
      key_gap=14
      key_max=95
      key_min=20
      leak_memory=0
      leaf_page_max=9
      logging=0
      logging_archive=0
      logging_prealloc=1
      logging=0
      lsm_worker_threads=4
      merge_max=11
      mmap=1
      ops=100000
      prefix_compression=0
      prefix_compression_min=5
      repeat_data_pct=64
      reverse=0
      rows=1000
      runs=0
      split_pct=41
      statistics=1
      threads=26
      timer=0
      value_max=3822
      value_min=12
      wiredtiger_config=
      write_pct=35
      ############################################
      

            Assignee:
            Unassigned Unassigned
            Reporter:
            keith.bostic@mongodb.com Keith Bostic (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: