No description
- C++ 96.9%
- Shell 3%
Compaction took its inputs out of the manifest and left the files on disk forever. Spec 6.7 allows deleting them once they are unlisted and no Version references them, so count the readers and act on it. A get () holds active_readers from before it copies the manifest until it has finished reading the files that copy names, so a reader that can still name a file was already counted when that file left the manifest, and a reader that starts later copies a manifest that no longer has it. remove_from_manifest queues the paths instead of unlinking, and sweep_pending_deletes -- run from the compaction thread's one second tick -- unlinks them when the count is zero. pending_deletes is memory only, so sweep_orphans covers what a crash leaves behind: *.sst.tmp always, and any *.sst the manifest does not name, skipped entirely when manifest.json is missing since that is a lost manifest rather than a store full of orphans. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| cmd/lsmkv | ||
| config | ||
| internal | ||
| tests | ||
| .clang-format | ||
| .gitignore | ||
| bench.sh | ||
| meson.build | ||