-
Type: Bug
-
Resolution: Unresolved
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Checkpoints
-
StorEng - Refinement Pipeline
Running the attached test with the tiered hook, the following assert from wt_txn_rollback is triggered:
2080 /* Metadata updates should never be rolled back. */ -> 2081 WT_ASSERT(session, !WT_IS_METADATA(op->btree->dhandle));
Here's the backtrace:
(lldb) bt * thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT * frame #0: 0x0000000181158764 libsystem_kernel.dylib`__pthread_kill + 8 frame #1: 0x000000018118fc28 libsystem_pthread.dylib`pthread_kill + 288 frame #2: 0x000000018109dae8 libsystem_c.dylib`abort + 180 frame #3: 0x00000001037cb300 libwiredtiger.11.2.0.dylib`__wt_abort(session=0x00000001101b4740) at os_abort.c:30:5 frame #4: 0x00000001038db190 libwiredtiger.11.2.0.dylib`__wt_txn_rollback(session=0x00000001101b4740, cfg=0x0000000000000000) at txn.c:2081:9 frame #5: 0x00000001038eaa90 libwiredtiger.11.2.0.dylib`__txn_checkpoint(session=0x00000001101b4740, cfg=0x000000016fdfc1e0) at txn_ckpt.c:1378:9 frame #6: 0x00000001038e6e50 libwiredtiger.11.2.0.dylib`__txn_checkpoint_wrapper(session=0x00000001101b4740, cfg=0x000000016fdfc1e0) at txn_ckpt.c:1443:11 frame #7: 0x00000001038e678c libwiredtiger.11.2.0.dylib`__wt_txn_checkpoint(session=0x00000001101b4740, cfg=0x000000016fdfc1e0, waiting=true) at txn_ckpt.c:1519:9 frame #8: 0x000000010386f3f4 libwiredtiger.11.2.0.dylib`__session_checkpoint(wt_session=0x00000001101b4740, config=",flush_tier=(enabled,force=true)") at session_api.c:2370:11 frame #9: 0x0000000102676d48 _wiredtiger.so`_wrap_Session_checkpoint(self=0x00000001025c97c0, args=0x00000001042f8c80) at wiredtigerPYTHON_wrap.c:7596:21 frame #10: 0x000000010046e428 Python`cfunction_call + 96 frame #11: 0x000000010041f320 Python`_PyObject_MakeTpCall + 132 frame #12: 0x000000010050fffc Python`_PyEval_EvalFrameDefault + 24048
This predictably fails on my Mac, but if I mess with the test in some simple ways, it can fail to fire.
I developed the test to chase another bug, it randomly does one of 4 things over and over: add data to one of 10 tables, do a checkpoint, open a checkpoint cursor, close one of the open checkpoint cursors. Obviously checkpoint cursors will be held over one or more checkpoints - that is the point of the test.
The tiered hook makes every checkpoint into a flush_tier checkpoint.