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