diff --git a/Cargo.lock b/Cargo.lock index e553509..d1866ba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -809,7 +809,7 @@ dependencies = [ [[package]] name = "synapse" -version = "0.1.4" +version = "0.1.5" dependencies = [ "anyhow", "blake3", diff --git a/Cargo.toml b/Cargo.toml index e013bbb..e029a70 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "synapse" -version = "0.1.4" +version = "0.1.5" edition = "2024" [[bin]] diff --git a/src/graph/ladybug_store.rs b/src/graph/ladybug_store.rs index 0e5ee51..af28055 100644 --- a/src/graph/ladybug_store.rs +++ b/src/graph/ladybug_store.rs @@ -428,10 +428,16 @@ impl GraphStore for LadybugGraphStore { Ok(()) })(); match result { - Ok(()) => conn - .query("COMMIT") - .map(|_| ()) - .map_err(|e| anyhow!("commit transaction: {e}")), + Ok(()) => match conn.query("COMMIT") { + Ok(_) => Ok(()), + // A failed COMMIT leaves the transaction open; roll it back + // (best effort) before surfacing the error, mirroring the + // mid-batch error path so we never leave a dangling txn/lock. + Err(e) => { + let _ = conn.query("ROLLBACK"); + Err(anyhow!("commit transaction: {e}")) + } + }, Err(err) => { // Best-effort rollback; report the original error. let _ = conn.query("ROLLBACK");