Wave-3 review gate: contract conformance clean; two findings fixed inline — substrate boundary move (open_writer_connection → seam.rs), writer-slot release on with_writer/begin/commit error arms + regression tests (task review-wave-3)

This commit is contained in:
glm-5.3-flash committed 2026-10-08 20:57:10 +00:00
1 parent a82c543b40
commit ecb8211694
8 files changed
+290 -34

No files matched your search

+23 -8
View File
@@ -70,9 +70,13 @@ impl SqliteTxHandle {
"the store is closed: writer slot unavailable",
))
})?;
conn.execute_batch("BEGIN IMMEDIATE")
.map_err(sqlite_error)
.map(|_| conn)
match conn.execute_batch("BEGIN IMMEDIATE").map_err(sqlite_error) {
Ok(()) => Ok(conn),
Err(e) => {
writer2.release(conn);
Err(e)
}
}
})
.await?;
Ok(Box::new(SqliteTxHandle {
@@ -387,12 +391,23 @@ impl TxHandle for SqliteTxHandle {
return Box::pin(async { Err(Error::Closed) });
};
let writer = self.writer.clone();
let writer_reopen = self.reopen.clone();
Box::pin(async move {
blocking(move || {
conn.execute_batch("COMMIT").map_err(sqlite_error)?;
writer.release(conn);
Ok(())
})
blocking(
move || match conn.execute_batch("COMMIT").map_err(sqlite_error) {
Ok(()) => {
writer.release(conn);
Ok(())
}
Err(e) => {
drop(conn);
if let Ok(fresh) = (writer_reopen)() {
writer.release(fresh);
}
Err(e)
}
},
)
.await
})
}