Revert "perf(blob): one syscall per new chunk in write_blob_bytes"

This reverts ee51b32. The create_new change showed no measurable throughput
benefit — three 9-rep interleaved runs on the same ext4 device swung −12%..+21%
at the 256 KiB CDC size (a negative stat on a warm dentry cache is ~µs, below
the shared-disk noise floor). Applying the same "no change without a measured
win" bar used for the pool-sizing revert: the idiom/TOCTOU angle is real but the
race is already prevented upstream by the PG pin-or-classify serialisation, so
it's defence-in-depth only — not enough to keep an unmeasured change. Reverts
the production change, the bench, and its doc together.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JG5yYZ9s868mJwqT2Qz7ez
This commit is contained in:
Claude
2026-06-22 09:42:37 +00:00
parent ee51b32ba9
commit 601fbdedf9
4 changed files with 6 additions and 258 deletions
@@ -128,29 +128,12 @@ async fn fsync_paths_parallel(paths: Vec<PathBuf>, strict: bool) -> Result<(), D
/// (fsync now vs. deferred batch sync), or `None` when the blob already
/// existed (idempotent skip — content-addressed, so identical by definition).
async fn write_blob_bytes(blob_path: &Path, data: &Bytes) -> Result<Option<File>, DomainError> {
// `create_new` = `open(O_CREAT | O_EXCL)`: ONE syscall that both tests for
// existence and creates, replacing the old `try_exists` (stat) + `File::create`
// (two metadata syscalls, each its own `spawn_blocking` round-trip on Tokio's
// blocking pool). On a large upload of unique data that's thousands of stats
// saved. The blob is content-addressed, so an already-present file is
// byte-identical by definition → `AlreadyExists` is exactly the idempotent
// skip the old `try_exists` branch performed — and O_EXCL closes the TOCTOU
// window the check-then-create pair left open (no truncate-over-a-racing-writer).
let mut file = match fs::OpenOptions::new()
.write(true)
.create_new(true)
.open(blob_path)
.await
{
Ok(file) => file,
Err(e) if e.kind() == std::io::ErrorKind::AlreadyExists => return Ok(None),
Err(e) => {
return Err(DomainError::internal_error(
"Blob",
format!("Failed to create blob file: {}", e),
));
}
};
if fs::try_exists(blob_path).await.unwrap_or(false) {
return Ok(None);
}
let mut file = fs::File::create(blob_path).await.map_err(|e| {
DomainError::internal_error("Blob", format!("Failed to create blob file: {}", e))
})?;
file.write_all(data).await.map_err(|e| {
DomainError::internal_error("Blob", format!("Failed to write blob from bytes: {}", e))
})?;