perf(stream,core): take the disk cache off the read path, warm file edges, report crawl progress

A block the player waits for no longer waits on its disk-cache write and
two fsyncs; the put runs in a spawned task and only the block itself is
synced before the rename. Opening a stream can fetch the first and last
block together, where MKV cues and the MP4 moov live. Downloads open a
copying stream that reads the disk cache but never fills it.

crawl_reporting reports the running file count after each listing.
This commit is contained in:
nvrl committed 2026-10-02 19:27:27 +02:00
1 parent 6f28a9c377
commit 8f78f5c1b1
4 files changed
+195 -8

No files matched your search

+3 -5
View File
@@ -321,11 +321,9 @@ async fn write_entry(path: &Path, block: &[u8]) -> Result<()> {
}
tokio::fs::rename(&temp, path).await?;
let mut sidecar = tokio::fs::File::create(meta_path(path)).await?;
sidecar
.write_all(block.len().to_string().as_bytes())
.await?;
sidecar.sync_all().await?;
// Not synced. The block's sync is the one the ordering depends on; a
// sidecar lost to a crash only turns a valid entry into a miss.
tokio::fs::write(meta_path(path), block.len().to_string()).await?;
Ok(())
}