diff --git a/src/transaction/transaction.rs b/src/transaction/transaction.rs index 44532f7e..5f955b6f 100644 --- a/src/transaction/transaction.rs +++ b/src/transaction/transaction.rs @@ -1139,6 +1139,11 @@ struct Committer { } impl Committer { + // CheckNotExists is checked in the prewrite phase and should not appear in the commit phase. + fn filter_out_check_not_exists_mutations(&mut self) { + self.mutations.retain(|m| m.op() != Op::CheckNotExists) + } + async fn commit(mut self) -> Result> { debug!("committing"); @@ -1155,6 +1160,8 @@ impl Committer { return Ok(min_commit_ts); } + self.filter_out_check_not_exists_mutations(); + let commit_ts = if self.options.async_commit { // FIXME: min_commit_ts == 0 => fallback to normal 2PC min_commit_ts.unwrap()