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 ############################################
- related to
-
WT-5 How does pget work: is it necessary?
- Closed
-
WT-6 Complex schema example
- Closed
-
WT-7 Do we need the handle->err/errx methods?
- Closed
-
WT-8 Do we need table load, bulk-load and/or dump methods?
- Closed
-
WT-9 Does adding schema need to be transactional?
- Closed
-
WT-10 Basic "getting started" tutorial
- Closed
-
WT-11 placeholder #11
- Closed
-
WT-12 Write more examples
- Closed
-
WT-13 Define supported platforms
- Closed
-
WT-14 Windows build
- Closed
-
WT-15 Automated build/test infrastructure
- Closed
-
WT-16 Test suite
- Closed
-
WT-17 Multithreaded tests
- Closed
-
WT-1624 If discarding a tree for sweep races with an update, give up the discard gracefully
- Closed