Just saw a failure with wtperf and the update-checkpoint-btree.wtperf runner, after 20+ good runs with no problem:
wtperf -h /tmp/WT_TEST
-O /b/bostic/wiredtiger/bench/wtperf/runners/update-checkpoint-btree.wtperf
sweep-server: ../src/conn/conn_dhandle.c, 647: !final || ret == 0
Here's the stack and local information:
(gdb) where WT-6 0x0000000000481df3 in __wt_conn_dhandle_discard_single ( session=0x802537000, dhandle=0x803647400, final=1) at ../src/conn/conn_dhandle.c:647 WT-7 0x0000000000481e58 in __wt_conn_dhandle_discard (conn=0x80250ce00) at ../src/conn/conn_dhandle.c:677 WT-8 0x000000000041209a in __wt_connection_close (conn=0x80250ce00) at ../src/conn/conn_open.c:92 WT-9 0x000000000040d2c9 in __conn_close (wt_conn=0x80250ce00, config=0x0) at ../src/conn/conn_api.c:573 WT-10 0x0000000000409cce in start_run (cfg=0x7fffffffd730) at ../../../bench/wtperf/wtperf.c:1869 WT-11 0x000000000040923b in start_all_runs (cfg=0x7fffffffd730) at ../../../bench/wtperf/wtperf.c:1652 WT-12 0x000000000040a745 in main (argc=5, argv=0x7fffffffd950) at ../../../bench/wtperf/wtperf.c:2086 (gdb) p final $6 = 1 (gdb) p ret $7 = 16 (gdb) p *dhandle $8 = {rwlock = 0x80341d0c0, l = {sle_next = 0x8025a3400}, session_ref = 0, session_inuse = 0, timeofdeath = 1402609850, name_hash = 9596272081698085885, name = 0x80341d0d0 "file:test.wt", checkpoint = 0x0, cfg = 0x80341e060, dsrc = 0x0, handle = 0x803667140, { statistics }, flags = 32}
So, ret == EBUSY, and dhandle.flags == WT_DHANDLE_OPEN.
The only path through the code I see is for __wt_conn_btree_sync_and_close to have returned EBUSY, even though it's the final call.
- related to
-
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