Skip to content

Commit 8e2e187

Browse files
committed
fix
1 parent 8534111 commit 8e2e187

File tree

6 files changed

+14
-63
lines changed

6 files changed

+14
-63
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ doc:
3333
cargo doc --workspace --exclude tikv-client-proto --document-private-items --no-deps
3434

3535
tiup:
36-
tiup playground nightly --mode tikv-slim --kv 1 --without-monitor --kv.config ./config/tikv.toml --pd.config ./config/pd.toml --kv.binpath ../tikv/target/debug/tikv-server &
36+
tiup playground nightly --mode tikv-slim --kv 3 --without-monitor --kv.config $(shell pwd)/config/tikv.toml --pd.config $(shell pwd)/config/pd.toml &
3737

3838
all: generate check doc test
3939

src/raw/client.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,6 @@ impl<PdC: PdClient> Client<PdC> {
233233
let request = new_raw_get_request(key, self.cf.clone());
234234
let plan = crate::request::PlanBuilder::new(self.rpc.clone(), self.api_version, request)
235235
.retry_multi_region(self.backoff.clone())
236-
.extract_error()
237236
.merge(CollectSingle)
238237
.post_process_default()
239238
.plan();
@@ -269,7 +268,6 @@ impl<PdC: PdClient> Client<PdC> {
269268
let request = new_raw_batch_get_request(keys, self.cf.clone());
270269
let plan = crate::request::PlanBuilder::new(self.rpc.clone(), self.api_version, request)
271270
.retry_multi_region(self.backoff.clone())
272-
.extract_error()
273271
.merge(Collect)
274272
.plan();
275273
plan.execute().await.map(|r| {
@@ -583,7 +581,6 @@ impl<PdC: PdClient> Client<PdC> {
583581
);
584582
let plan = crate::request::PlanBuilder::new(self.rpc.clone(), self.api_version, req)
585583
.retry_multi_region(self.backoff.clone())
586-
.extract_error()
587584
.merge(CollectSingle)
588585
.post_process_default()
589586
.plan();
@@ -663,7 +660,6 @@ impl<PdC: PdClient> Client<PdC> {
663660
crate::request::PlanBuilder::new(self.rpc.clone(), self.api_version, request)
664661
.single_region_with_store(region_store.clone())
665662
.await?
666-
.extract_error()
667663
.plan()
668664
.execute()
669665
.await?;
@@ -723,7 +719,6 @@ impl<PdC: PdClient> Client<PdC> {
723719
let request = new_raw_batch_scan_request(ranges, each_limit, key_only, self.cf.clone());
724720
let plan = crate::request::PlanBuilder::new(self.rpc.clone(), self.api_version, request)
725721
.retry_multi_region(self.backoff.clone())
726-
.extract_error()
727722
.merge(Collect)
728723
.plan();
729724
plan.execute().await.map(|r| {

src/request/plan.rs

Lines changed: 12 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -784,54 +784,18 @@ where
784784
type Result = P::Result;
785785

786786
async fn execute(&self) -> Result<Self::Result> {
787-
let result = self.inner.execute().await;
788-
let mut errors = Vec::new();
789-
match result {
790-
Ok(mut resp) => {
791-
if let Some(e) = resp.key_errors() {
792-
errors.extend(e);
793-
}
794-
if let Some(e) = resp.region_errors() {
795-
errors.extend(e.into_iter().map(|e| Error::RegionError(Box::new(e))));
796-
}
797-
798-
if errors.is_empty() {
799-
return Ok(resp);
800-
}
801-
}
802-
Err(Error::MultipleKeyErrors(e)) => errors.extend(e),
803-
Err(e) => errors.push(e),
804-
};
805-
for error in &mut errors {
806-
match error {
807-
Error::KvError { message }
808-
if message
809-
.contains("Api version in request does not match with TiKV storage")
810-
&& message.contains("storage: V1, request: V2") =>
811-
{
812-
*error = Error::ServerKeyspaceNotEnabled
813-
}
814-
Error::KvError { message }
815-
if message
816-
.contains("Api version in request does not match with TiKV storage")
817-
&& message.contains("storage: V1ttl, request: V2") =>
818-
{
819-
*error = Error::ServerKeyspaceNotEnabled
820-
}
821-
Error::KvError { message }
822-
if message
823-
.contains("Api version in request does not match with TiKV storage")
824-
&& message.contains("storage: V2, request: V1") =>
825-
{
826-
*error = Error::ClientKeyspaceNotEnabled
827-
}
828-
_ => (),
829-
}
830-
}
831-
match errors.len() {
832-
0 => unreachable!(),
833-
1 => Err(errors.pop().unwrap()),
834-
_ => Err(Error::ExtractedErrors(errors)),
787+
let result = self.inner.execute().await?;
788+
if let Some(errors) = result.key_errors() {
789+
Err(Error::ExtractedErrors(errors))
790+
} else if let Some(errors) = result.region_errors() {
791+
Err(Error::ExtractedErrors(
792+
errors
793+
.into_iter()
794+
.map(|e| Error::RegionError(Box::new(e)))
795+
.collect(),
796+
))
797+
} else {
798+
Ok(result)
835799
}
836800
}
837801
}

src/store/errors.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,11 +160,10 @@ impl HasKeyErrors for kvrpcpb::PessimisticRollbackResponse {
160160
}
161161
}
162162

163-
impl<T: HasKeyErrors> HasKeyErrors for Result<T, Error> {
163+
impl<T: HasKeyErrors, E: Display> HasKeyErrors for Result<T, E> {
164164
fn key_errors(&mut self) -> Option<Vec<Error>> {
165165
match self {
166166
Ok(x) => x.key_errors(),
167-
Err(Error::MultipleKeyErrors(e)) => Some(std::mem::take(e)),
168167
Err(e) => Some(vec![Error::StringError(e.to_string())]),
169168
}
170169
}

src/transaction/client.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,6 @@ impl Client {
299299
let req = new_unsafe_destroy_range_request(range);
300300
let plan = crate::request::PlanBuilder::new(self.pd.clone(), self.api_version, req)
301301
.all_stores(DEFAULT_STORE_BACKOFF)
302-
.extract_error()
303302
.merge(crate::request::Collect)
304303
.plan();
305304
plan.execute().await

src/transaction/transaction.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,6 @@ impl<PdC: PdClient> Transaction<PdC> {
146146
let plan = PlanBuilder::new(rpc, api_version, request)
147147
.resolve_lock(retry_options.lock_backoff, api_version)
148148
.retry_multi_region(DEFAULT_REGION_BACKOFF)
149-
.extract_error()
150149
.merge(CollectSingle)
151150
.post_process_default()
152151
.plan();
@@ -282,7 +281,6 @@ impl<PdC: PdClient> Transaction<PdC> {
282281
let plan = PlanBuilder::new(rpc, api_version, request)
283282
.resolve_lock(retry_options.lock_backoff, api_version)
284283
.retry_multi_region(retry_options.region_backoff)
285-
.extract_error()
286284
.merge(Collect)
287285
.plan();
288286
plan.execute()
@@ -800,7 +798,6 @@ impl<PdC: PdClient> Transaction<PdC> {
800798
let plan = PlanBuilder::new(rpc, api_version, request)
801799
.resolve_lock(retry_options.lock_backoff, api_version)
802800
.retry_multi_region(retry_options.region_backoff)
803-
.extract_error()
804801
.merge(Collect)
805802
.plan();
806803
plan.execute()
@@ -861,7 +858,6 @@ impl<PdC: PdClient> Transaction<PdC> {
861858
)
862859
.preserve_shard()
863860
.retry_multi_region_preserve_results(self.options.retry_options.region_backoff.clone())
864-
.extract_error()
865861
.merge(CollectWithShard)
866862
.plan();
867863
let pairs = plan.execute().await;
@@ -919,7 +915,6 @@ impl<PdC: PdClient> Transaction<PdC> {
919915
)
920916
.retry_multi_region(self.options.retry_options.region_backoff.clone())
921917
.extract_error()
922-
.extract_error()
923918
.plan();
924919
plan.execute().await?;
925920

@@ -989,7 +984,6 @@ impl<PdC: PdClient> Transaction<PdC> {
989984
let plan = PlanBuilder::new(rpc.clone(), api_version, request)
990985
.retry_multi_region(region_backoff.clone())
991986
.merge(CollectSingle)
992-
.extract_error()
993987
.plan();
994988
plan.execute().await?;
995989
}

0 commit comments

Comments
 (0)