Skip to content

Commit 63dddbb

Browse files
removing the lambda to simplify the retry logic
1 parent 4740269 commit 63dddbb

File tree

1 file changed

+7
-19
lines changed

1 file changed

+7
-19
lines changed

src/raw/client.rs

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// Copyright 2019 TiKV Project Authors. Licensed under Apache-2.0.
22
use core::ops::Range;
3-
use std::future::Future;
4-
use std::pin::Pin;
3+
54
use std::str::FromStr;
65
use std::sync::Arc;
76

@@ -14,7 +13,7 @@ use crate::config::Config;
1413
use crate::pd::PdClient;
1514
use crate::pd::PdRpcClient;
1615
use crate::proto::kvrpcpb::{RawScanRequest, RawScanResponse};
17-
use crate::proto::{errorpb, metapb};
16+
use crate::proto::metapb;
1817
use crate::raw::lowering::*;
1918
use crate::request::CollectSingle;
2019
use crate::request::EncodeKeyspace;
@@ -766,10 +765,6 @@ impl<PdC: PdClient> Client<PdC> {
766765
let (start_key, end_key) = range.clone().into_keys();
767766
let mut current_key: Key = start_key;
768767

769-
let region_error_handler =
770-
|pd_rpc_client: Arc<PdC>, err: errorpb::Error, store: RegionStore| {
771-
Box::pin(plan::handle_region_error(pd_rpc_client, err, store))
772-
} as _;
773768
while current_limit > 0 {
774769
let scan_args = ScanInnerArgs {
775770
start_key: current_key.clone(),
@@ -779,7 +774,7 @@ impl<PdC: PdClient> Client<PdC> {
779774
reverse,
780775
backoff: backoff.clone(),
781776
};
782-
let (res, next_key) = self.retryable_scan(scan_args, region_error_handler).await?;
777+
let (res, next_key) = self.retryable_scan(scan_args).await?;
783778

784779
let mut kvs = res
785780
.map(|r| r.kvs.into_iter().map(Into::into).collect::<Vec<KvPair>>())
@@ -805,18 +800,10 @@ impl<PdC: PdClient> Client<PdC> {
805800
Ok(result)
806801
}
807802

808-
async fn retryable_scan<'a, F>(
803+
async fn retryable_scan(
809804
&self,
810805
mut scan_args: ScanInnerArgs,
811-
mut error_handler: F,
812-
) -> Result<(Option<RawScanResponse>, Key)>
813-
where
814-
F: FnMut(
815-
Arc<PdC>,
816-
errorpb::Error,
817-
RegionStore,
818-
) -> Pin<Box<dyn Future<Output = Result<bool>>>>,
819-
{
806+
) -> Result<(Option<RawScanResponse>, Key)> {
820807
let start_key = scan_args.start_key;
821808

822809
let region = self.rpc.clone().region_for_key(&start_key).await?;
@@ -834,7 +821,8 @@ impl<PdC: PdClient> Client<PdC> {
834821
Ok(mut r) => {
835822
if let Some(err) = r.region_error() {
836823
let status =
837-
error_handler(self.rpc.clone(), err.clone(), store.clone()).await?;
824+
plan::handle_region_error(self.rpc.clone(), err.clone(), store.clone())
825+
.await?;
838826
if status {
839827
continue;
840828
} else if let Some(duration) = scan_args.backoff.next_delay_duration() {

0 commit comments

Comments
 (0)