-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Block Cache
-
None
-
Storage Engines - Persistence
-
44.934
-
StorEng - Defined Pipeline
-
None
Part of WT-18574, on the block-cache-depr feature branch. Final source ticket: after S1 (deprecation check) and S2 (call sites and statistics gone), delete the WT_BLKCACHE core and the memkind build dependency, and document the removal.
Work
- Move __wt_blkcache_open from block_cache.c to block_mgr.c, keeping the name (callers untouched) and behavior: disagg dispatch, file: prefix and unsupported-URI handling, the leftover-tiered-URI rejection (tiered URIs must never map onto a file), forced-salvage, readonly, allocsize, live-restore metadata, error cleanup. Update the comment in test/catch2/block/util_block.cpp. Close WT-14642 as Fixed on merge.
- Delete block_cache.c/block_cache.h, the WT_BLKCACHE connection state/typedefs, and the __wt_blkcache_destroy call in conn_open.c. Update dist/filelist, dist/filelist.bzl, CMake source lists, MODULARITY.md. Keep block_io.c, block_map.c, block_mgr.c and their module; the src/block_cache/ directory and module name stay — renaming is out of scope.
- Verify the 22 legacy counters are gone — S1 and S2 delete them with their last updater. Keep the seven victim-cache counters: block_cache_puts, block_cache_app_thread_puts, block_cache_put_time, block_cache_app_thread_put_time, block_cache_put_time_max, block_cache_put_failures, block_cache_cold_not_cached.
- Build: remove ENABLE_MEMKIND, HAVE_LIBMEMKIND, memkind detection/linking, wiredtiger_config.h.in macros and the pkg-config linkage. Clean dist/s_string.ok if s_string flags memkind/libmemkind as unused.
- Docs: add the upgrade note to src/docs/upgrading.dox (enabled=true errors, disabled settings warn and are ignored, persisted basecfg with enabled=true needs a block_cache=(enabled=false) override to reopen, stats and build changes, victim cache unaffected, no migration). Fix page-log comments in wiredtiger.h.in to say "victim cache" without renaming public APIs. Update AGENTS.md and the stale blkcache_exiting example in src/include/hardware.h.
- Tooling: review s_clang_scan.diff, dist/s_string.ok, tools/callgraph (keep the block_cache module's blkcache alias) and tools/wt-ret-trace1 (keep — it references the surviving __blkcache_read_corrupt).
- File a tech-debt ticket to rename the shared helpers that keep blkcache names (_wt_blkcache_read, wt_blkcache_read_multi, wt_blkcache_write, _wt_blkcache_open) — renames are deliberately out of the removal PRs to keep them reviewable.
Acceptance
- No references to WT_BLKCACHE or the get/put/remove/setup/destroy functions.
- Prototypes/config/stats/bindings regenerated (dist/s_all, dist/s_docs); victim-cache names resolve.
- test_evict_disagg_cache_eligible.cpp compiles unchanged (direct block_cache_cold_not_cached field access).
- Static/shared, diagnostic, sanitizer, macOS/Windows, import/live-restore and disagg gates pass.
- Builds with and without memkind installed never link it.
Dependencies
S1 and S2 merged; rebase after both. Blocks integration.