Due to changes introduced by the disagg merge we now obtain 2 references instead of 1 when we find an existing dhandle in the following code:
static int __session_find_shared_dhandle(WT_SESSION_IMPL *session, const char *uri, const char *checkpoint) { WT_DECL_RET; WT_WITH_HANDLE_LIST_READ_LOCK(session, if ((ret=__wt_conn_dhandle_find(session, uri, checkpoint)) ==0) WT_DHANDLE_ACQUIRE(session->dhandle)); // >> get first ref if (ret!=WT_NOTFOUND) // go to alloc since ret == 0 return (ret); WT_WITH_HANDLE_LIST_WRITE_LOCK(session, if ((ret=__wt_conn_dhandle_alloc(session, uri, checkpoint)) ==0) // ret == 0 since dhandle already exists WT_DHANDLE_ACQUIRE(session->dhandle)); // >> get second reference return (ret); }
Since this reference is not released later, dhandles couldn't be swept until the connection close in many cases.
Guilty commit: https://github.com/wiredtiger/wiredtiger/commit/50b05eb051ef702abbe2e07a7d5a995ffda904a7
- is related to
- 
                    WT-15667 Handle abandoned checkpoints in PALite -         
- Closed
 
-         
- 
                    WT-15648 Fix memory heap-use-after-free issue when packing the internal page delta -         
- Closed
 
-         
- 
                    WT-15661 Memory leak in reconciliation in disagg -         
- Closed
 
-         
- 
                    WT-15658 Disable block cache in WT -         
- Closed
 
-         
- 
                    WT-15687 Add stat to track in-memory restorations due to invisible updates -         
- Closed
 
-         
- 
                    WT-15644 Add verbose logging for disagg checkpoints -         
- Closed
 
-         
- 
                    WT-15670 Fix verify output in test/format -         
- Closed
 
-         
- 
                    WT-15683 Fix comment describing __wt_btree_bytes_updates -         
- Closed
 
-         
- related to
- 
                    WT-15192 Incorrect comparison between local table and metadata checkpoint orders during pruning -         
- Closed
 
-         
- 
                    WT-15488 test_verify.py fails with mismatch in page IDs from PALM and btree walk -         
- Closed
 
-         
- 
                    WT-15640 __wti_page_inmem_updates assertion failure (disagg) -         
- Closed
 
-         
- 
                    WT-14885 Rewrite pages with delta directly to a full page -         
- Closed
 
-         
- 
                    WT-15413 Verify accounts for followers missing stable constituent prior to checkpoint pickup -         
- Closed
 
-         
- 
                    WT-15623 Add realtime output to run.py -         
- Closed
 
-         
- 
                    WT-15519 Abort when seeing OOO keys in __verify_row_key_order_check -         
- Closed
 
-         
- 
                    WT-15279 Fix race in prefetch where the same page is selected by two threads -         
- Closed
 
-         
- 
                    WT-15602 test/format (disagg.mode=switch) heap-use-after-free when comparing keys in disagg -         
- Closed
 
-         
- 
                    WT-15603 test_wt4105_large_doc_small_upd: assertion failure -         
- Closed
 
-