Description
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
|
############################################
|
Attachments
Issue Links
- 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