-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: 4.4.0
-
Component/s: None
-
None
-
None
In some cases, we are still evicting uncommitted changes in metadata.
/*
* The checkpoint transaction is special. Make sure we never write metadata updates from a
* checkpoint in a concurrent session.
*/
WT_ASSERT(session, !WT_IS_METADATA(session->dhandle) || upd == NULL ||
upd->txnid == WT_TXN_NONE || upd->txnid != S2C(session)->txn_global.checkpoint_state.id ||
WT_SESSION_IS_CHECKPOINT(session));
(gdb) bt
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1 0x00007f68ece7b801 in __GI_abort () at abort.c:79
#2 0x00007f68ec3dc6b3 in __wt_abort (session=0x556983cf52d0) at ../src/os_common/os_abort.c:30
#3 0x00007f68ec40953e in __wt_rec_upd_select (session=0x556983cf52d0, r=0x7f68d0001670, ins=0x0, ripcip=0x556982bff740, vpack=0x7f68e9fec9b0,
upd_select=0x7f68e9fec960) at ../src/reconcile/rec_visibility.c:297
#4 0x00007f68ec403c07 in __wt_rec_row_leaf (session=0x556983cf52d0, r=0x7f68d0001670, pageref=0x556982d0d650, salvage=0x0)
at ../src/reconcile/rec_row.c:795
#5 0x00007f68ec40e7f8 in __reconcile (session=0x556983cf52d0, ref=0x556982d0d650, salvage=0x0, flags=140, page_lockedp=0x7f68e9fecc6e)
at ../src/reconcile/rec_write.c:176
#6 0x00007f68ec40e48a in __wt_reconcile (session=0x556983cf52d0, ref=0x556982d0d650, salvage=0x0, flags=140) at ../src/reconcile/rec_write.c:87
#7 0x00007f68ec39de69 in __evict_review (session=0x556983cf52d0, ref=0x556982d0d650, evict_flags=0, inmem_splitp=0x7f68e9fecd4f)
at ../src/evict/evict_page.c:627
#8 0x00007f68ec39c445 in __wt_evict (session=0x556983cf52d0, ref=0x556982d0d650, previous_state=3 '\003', flags=0) at ../src/evict/evict_page.c:150
#9 0x00007f68ec39902c in __evict_page (session=0x556983cf52d0, is_server=false) at ../src/evict/evict_lru.c:2246
#10 0x00007f68ec39518c in __evict_lru_pages (session=0x556983cf52d0, is_server=false) at ../src/evict/evict_lru.c:1118
#11 0x00007f68ec393372 in __wt_evict_thread_run (session=0x556983cf52d0, thread=0x556983bb7a70) at ../src/evict/evict_lru.c:311
#12 0x00007f68ec454658 in __thread_run (arg=0x556983bb7a70) at ../src/support/thread_group.c:31
#13 0x00007f68ed9d86db in start_thread (arg=0x7f68e9fed700) at pthread_create.c:463
#14 0x00007f68ecf5c88f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb) f 3
#3 0x00007f68ec40953e in __wt_rec_upd_select (session=0x556983cf52d0, r=0x7f68d0001670, ins=0x0, ripcip=0x556982bff740, vpack=0x7f68e9fec9b0,
upd_select=0x7f68e9fec960) at ../src/reconcile/rec_visibility.c:297
297 WT_ASSERT(session, !WT_IS_METADATA(session->dhandle) || upd == NULL ||
(gdb) p upd
$1 = (WT_UPDATE *) 0x55698441f6d0
(gdb) p session->dhanle
There is no member named dhanle.
(gdb) p session->dhanle
There is no member named dhanle.
(gdb) p session->dhandle
$2 = (WT_DATA_HANDLE *) 0x556982cd8cd0
(gdb) p session->dhandle->flags
$3 = 160
(gdb) p *upd
$4 = {txnid = 2, durable_ts = 0, start_ts = 0, next = 0x0, size = 1126, type = 3 '\003', prepare_state = 0 '\000', flags = 0 '\000',
data = 0x55698441f6f7 "access_pattern_hint=none,allocation_size=4KB,app_metadata=,assert=(commit_timestamp=none,durable_timestamp=none,read_timestamp=none),block_allocation=best,block_compressor=,cache_resident=false,checks"...}
(gdb) p ((WT_CONNECTION_IMPL *)(session)->iface.connection)->txn_global.checkpoint_state.id
$5 = 2
(gdb)