在使用 TiKV 的 rust client 时,创建两个悲观事务,并发 put 相同的 key,只会有一个成功,失败的报错信息如下:
PessimisticLock error: MultipleKeyErrors([KeyError(KeyError { locked: None, retryable: “Error(Txn(Error(Mvcc(Error(WriteConflict { start_ts: TimeStamp(461117627059142663), conflict_start_ts: TimeStamp(461117627059142658), conflict_commit_ts: TimeStamp(461117627059142671), key: [116, 0, 0, 0, 37, 95, 114, 1, 110, 97, 109, 101, 49, 0, 0, 0, 252, 1, 169, 12, 128, 0, 0, 0, 0, 0, 250], primary: [116, 0, 0, 0, 37, 95, 114, 1, 110, 97, 109, 101, 49, 0, 0, 0, 252, 1, 169, 12, 128, 0, 0, 0, 0, 0, 250], reason: PessimisticRetry })))))”, abort: “”, conflict: Some(WriteConflict { start_ts: 461117627059142663, conflict_ts: 461117627059142658, key: [116, 0, 0, 0, 37, 95, 114, 1, 110, 97, 109, 101, 49, 0, 0, 0, 252, 1, 169, 12, 128, 0, 0, 0, 0, 0, 250], primary: [116, 0, 0, 0, 37, 95, 114, 1, 110, 97, 109, 101, 49, 0, 0, 0, 252, 1, 169, 12, 128, 0, 0, 0, 0, 0, 250], conflict_commit_ts: 461117627059142671, reason: PessimisticRetry }), already_exist: None, deadlock: None, commit_ts_expired: None, txn_not_found: None, commit_ts_too_large: None, assertion_failed: None, primary_mismatch: None })])
但是我记得在 TiDB 中,两个悲观事务对同一个 key 上锁,后上锁的会阻塞住而不是直接失败吧,请问这里为何存在这样的区别呢