From d0c8b06ffe2d15128937183336eb7682be7fdf05 Mon Sep 17 00:00:00 2001 From: Ping Yu Date: Wed, 21 Jan 2026 22:47:32 +0800 Subject: [PATCH 1/3] transaction: Re-export kvrpcpb::LockInfo Signed-off-by: Ping Yu --- src/transaction/client.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/transaction/client.rs b/src/transaction/client.rs index f042b391..84452d60 100644 --- a/src/transaction/client.rs +++ b/src/transaction/client.rs @@ -9,7 +9,6 @@ use crate::backoff::{DEFAULT_REGION_BACKOFF, DEFAULT_STORE_BACKOFF}; use crate::config::Config; use crate::pd::PdClient; use crate::pd::PdRpcClient; -use crate::proto::kvrpcpb; use crate::proto::pdpb::Timestamp; use crate::request::plan::CleanupLocksResult; use crate::request::EncodeKeyspace; @@ -29,6 +28,9 @@ use crate::Backoff; use crate::BoundRange; use crate::Result; +#[doc(inline)] +pub use crate::proto::kvrpcpb::LockInfo; + // FIXME: cargo-culted value const SCAN_LOCK_BATCH_SIZE: u32 = 1024; @@ -302,7 +304,7 @@ impl Client { safepoint: &Timestamp, range: impl Into, batch_size: u32, - ) -> Result> { + ) -> Result> { use crate::request::TruncateKeyspace; let range = range.into().encode_keyspace(self.keyspace, KeyMode::Txn); @@ -321,10 +323,10 @@ impl Client { /// timestamp when checking transaction status. pub async fn resolve_locks( &self, - locks: Vec, + locks: Vec, timestamp: Timestamp, mut backoff: Backoff, - ) -> Result> { + ) -> Result> { use crate::request::TruncateKeyspace; let mut live_locks = locks; From 5b16922ed65350e77349439d7f6875e141c82656 Mon Sep 17 00:00:00 2001 From: Ping Yu Date: Wed, 21 Jan 2026 22:53:47 +0800 Subject: [PATCH 2/3] pub Signed-off-by: Ping Yu --- src/transaction/mod.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/transaction/mod.rs b/src/transaction/mod.rs index 5bc8f0e4..2791a814 100644 --- a/src/transaction/mod.rs +++ b/src/transaction/mod.rs @@ -9,6 +9,7 @@ //! **Warning:** It is not advisable to use both raw and transactional functionality in the same keyspace. pub use client::Client; +pub use client::LockInfo; pub(crate) use lock::resolve_locks; pub(crate) use lock::HasLocks; pub use snapshot::Snapshot; From 285cd09ca757a86ad3a3db22d460c0a4e64bc4bd Mon Sep 17 00:00:00 2001 From: Ping Yu Date: Thu, 22 Jan 2026 09:44:02 +0800 Subject: [PATCH 3/3] re-export proto error Signed-off-by: Ping Yu --- src/common/errors.rs | 28 +++++++++++++++++++++------- src/common/mod.rs | 2 ++ src/lib.rs | 6 ++++++ src/transaction/client.rs | 12 ++++++++---- src/transaction/mod.rs | 2 +- 5 files changed, 38 insertions(+), 12 deletions(-) diff --git a/src/common/errors.rs b/src/common/errors.rs index 41e081a2..c48a2665 100644 --- a/src/common/errors.rs +++ b/src/common/errors.rs @@ -8,6 +8,20 @@ use crate::proto::kvrpcpb; use crate::region::RegionVerId; use crate::BoundRange; +/// Protobuf-generated region-level error returned by TiKV. +/// +/// This type is generated from TiKV's protobuf definitions and may change in a +/// future release even if the wire format is compatible. +#[doc(inline)] +pub use crate::proto::errorpb::Error as ProtoRegionError; + +/// Protobuf-generated per-key error returned by TiKV. +/// +/// This type is generated from TiKV's protobuf definitions and may change in a +/// future release even if the wire format is compatible. +#[doc(inline)] +pub use crate::proto::kvrpcpb::KeyError as ProtoKeyError; + /// An error originating from the TiKV client or dependencies. #[derive(Debug, Error)] #[allow(clippy::large_enum_variant)] @@ -63,13 +77,13 @@ pub enum Error { Canceled(#[from] futures::channel::oneshot::Canceled), /// Errors caused by changes of region information #[error("Region error: {0:?}")] - RegionError(Box), + RegionError(Box), /// Whether the transaction is committed or not is undetermined #[error("Whether the transaction is committed or not is undetermined")] UndeterminedError(Box), - /// Wraps `crate::proto::kvrpcpb::KeyError` + /// Wraps a per-key error returned by TiKV. #[error("{0:?}")] - KeyError(Box), + KeyError(Box), /// Multiple errors generated from the ExtractError plan. #[error("Multiple errors: {0:?}")] ExtractedErrors(Vec), @@ -116,14 +130,14 @@ pub enum Error { TxnNotFound(kvrpcpb::TxnNotFound), } -impl From for Error { - fn from(e: crate::proto::errorpb::Error) -> Error { +impl From for Error { + fn from(e: ProtoRegionError) -> Error { Error::RegionError(Box::new(e)) } } -impl From for Error { - fn from(e: crate::proto::kvrpcpb::KeyError) -> Error { +impl From for Error { + fn from(e: ProtoKeyError) -> Error { Error::KeyError(Box::new(e)) } } diff --git a/src/common/mod.rs b/src/common/mod.rs index cd05a56e..06236c64 100644 --- a/src/common/mod.rs +++ b/src/common/mod.rs @@ -4,4 +4,6 @@ mod errors; pub mod security; pub use self::errors::Error; +pub use self::errors::ProtoKeyError; +pub use self::errors::ProtoRegionError; pub use self::errors::Result; diff --git a/src/lib.rs b/src/lib.rs index 60dc2956..85cd9d27 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -122,6 +122,10 @@ pub use common::security::SecurityManager; #[doc(inline)] pub use common::Error; #[doc(inline)] +pub use common::ProtoKeyError; +#[doc(inline)] +pub use common::ProtoRegionError; +#[doc(inline)] pub use common::Result; #[doc(inline)] pub use config::Config; @@ -157,6 +161,8 @@ pub use crate::transaction::CheckLevel; #[doc(inline)] pub use crate::transaction::Client as TransactionClient; #[doc(inline)] +pub use crate::transaction::ProtoLockInfo; +#[doc(inline)] pub use crate::transaction::Snapshot; #[doc(inline)] pub use crate::transaction::Transaction; diff --git a/src/transaction/client.rs b/src/transaction/client.rs index 84452d60..a40044b7 100644 --- a/src/transaction/client.rs +++ b/src/transaction/client.rs @@ -28,8 +28,12 @@ use crate::Backoff; use crate::BoundRange; use crate::Result; +/// Protobuf-generated lock information returned by TiKV. +/// +/// This type is generated from TiKV's protobuf definitions and may change in a +/// future release even if the wire format is compatible. #[doc(inline)] -pub use crate::proto::kvrpcpb::LockInfo; +pub use crate::proto::kvrpcpb::LockInfo as ProtoLockInfo; // FIXME: cargo-culted value const SCAN_LOCK_BATCH_SIZE: u32 = 1024; @@ -304,7 +308,7 @@ impl Client { safepoint: &Timestamp, range: impl Into, batch_size: u32, - ) -> Result> { + ) -> Result> { use crate::request::TruncateKeyspace; let range = range.into().encode_keyspace(self.keyspace, KeyMode::Txn); @@ -323,10 +327,10 @@ impl Client { /// timestamp when checking transaction status. pub async fn resolve_locks( &self, - locks: Vec, + locks: Vec, timestamp: Timestamp, mut backoff: Backoff, - ) -> Result> { + ) -> Result> { use crate::request::TruncateKeyspace; let mut live_locks = locks; diff --git a/src/transaction/mod.rs b/src/transaction/mod.rs index 2791a814..af82caf3 100644 --- a/src/transaction/mod.rs +++ b/src/transaction/mod.rs @@ -9,7 +9,7 @@ //! **Warning:** It is not advisable to use both raw and transactional functionality in the same keyspace. pub use client::Client; -pub use client::LockInfo; +pub use client::ProtoLockInfo; pub(crate) use lock::resolve_locks; pub(crate) use lock::HasLocks; pub use snapshot::Snapshot;