diff --git a/src/request/mod.rs b/src/request/mod.rs index f73bc5a0..b2206288 100644 --- a/src/request/mod.rs +++ b/src/request/mod.rs @@ -42,7 +42,7 @@ mod shard; #[async_trait] pub trait KvRequest: Request + Sized + Clone + Sync + Send + 'static { /// The expected response to the request. - type Response: HasKeyErrors + HasLocks + Clone + Send + 'static; + type Response: HasKeyErrors + HasLocks + Clone + Send + std::fmt::Debug + 'static; // TODO: fn encode_request() // TODO: fn decode_response() @@ -114,7 +114,7 @@ mod test { #[tokio::test] async fn test_region_retry() { - #[derive(Clone)] + #[derive(Clone, Debug)] struct MockRpcResponse; impl HasKeyErrors for MockRpcResponse { diff --git a/src/request/plan.rs b/src/request/plan.rs index d3fb6ffe..31ece664 100644 --- a/src/request/plan.rs +++ b/src/request/plan.rs @@ -62,6 +62,9 @@ impl Plan for Dispatch { async fn execute(&self) -> Result { let stats = tikv_stats(self.request.label()); + if self.request.label() == "kv_prewrite" || self.request.label() == "kv_commit" { + info!("req {}", self.request.to_str()) + } let result = self .kv_client .as_ref() @@ -70,8 +73,13 @@ impl Plan for Dispatch { .await; let result = stats.done(result); result.map(|r| { - *r.downcast() - .expect("Downcast failed: request and response type mismatch") + let resp = *r + .downcast() + .expect("Downcast failed: request and response type mismatch"); + if self.request.label() == "kv_prewrite" || self.request.label() == "kv_commit" { + info!("resp {:?}", resp); + } + resp }) } } diff --git a/src/store/request.rs b/src/store/request.rs index e11fc8f1..ef32445c 100644 --- a/src/store/request.rs +++ b/src/store/request.rs @@ -25,6 +25,9 @@ pub trait Request: Any + Sync + Send + 'static { /// Should always use `set_context` other than modify the `self.context` directly. fn set_context(&mut self, context: kvrpcpb::Context); fn set_api_version(&mut self, api_version: kvrpcpb::ApiVersion); + fn to_str(&self) -> String { + "".to_string() + } } macro_rules! impl_request { @@ -68,6 +71,10 @@ macro_rules! impl_request { let context = self.context.get_or_insert(kvrpcpb::Context::default()); context.api_version = api_version.into(); } + + fn to_str(&self) -> String { + format!("{:?}", self) + } } }; }