mirror of https://github.com/tikv/client-rust.git
Add option to not automatically resolve regions
Signed-off-by: Nick Cameron <nrc@ncameron.org>
This commit is contained in:
parent
59b4a8d32b
commit
5d584d93b3
|
@ -75,6 +75,9 @@ pub trait KvRequest: Request + Clone + Sync + Send + 'static + Sized {
|
||||||
})
|
})
|
||||||
.map_ok(move |(request, mut response)| {
|
.map_ok(move |(request, mut response)| {
|
||||||
if let Some(region_error) = response.region_error() {
|
if let Some(region_error) = response.region_error() {
|
||||||
|
if !retry.auto_resolve_regions {
|
||||||
|
return stream::once(future::err(region_error)).boxed();
|
||||||
|
}
|
||||||
return request.on_region_error(region_error, pd_client.clone(), retry.clone());
|
return request.on_region_error(region_error, pd_client.clone(), retry.clone());
|
||||||
}
|
}
|
||||||
// Resolve locks
|
// Resolve locks
|
||||||
|
@ -169,6 +172,7 @@ pub struct RetryOptions {
|
||||||
pub region_backoff: Backoff,
|
pub region_backoff: Backoff,
|
||||||
pub lock_backoff: Backoff,
|
pub lock_backoff: Backoff,
|
||||||
pub auto_resolve_locks: bool,
|
pub auto_resolve_locks: bool,
|
||||||
|
pub auto_resolve_regions: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RetryOptions {
|
impl RetryOptions {
|
||||||
|
@ -177,6 +181,7 @@ impl RetryOptions {
|
||||||
region_backoff: DEFAULT_REGION_BACKOFF,
|
region_backoff: DEFAULT_REGION_BACKOFF,
|
||||||
lock_backoff: OPTIMISTIC_BACKOFF,
|
lock_backoff: OPTIMISTIC_BACKOFF,
|
||||||
auto_resolve_locks: true,
|
auto_resolve_locks: true,
|
||||||
|
auto_resolve_regions: true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -185,6 +190,7 @@ impl RetryOptions {
|
||||||
region_backoff: DEFAULT_REGION_BACKOFF,
|
region_backoff: DEFAULT_REGION_BACKOFF,
|
||||||
lock_backoff: PESSIMISTIC_BACKOFF,
|
lock_backoff: PESSIMISTIC_BACKOFF,
|
||||||
auto_resolve_locks: true,
|
auto_resolve_locks: true,
|
||||||
|
auto_resolve_regions: true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -369,6 +375,7 @@ mod test {
|
||||||
region_backoff: Backoff::no_jitter_backoff(1, 1, 3),
|
region_backoff: Backoff::no_jitter_backoff(1, 1, 3),
|
||||||
lock_backoff: Backoff::no_jitter_backoff(1, 1, 3),
|
lock_backoff: Backoff::no_jitter_backoff(1, 1, 3),
|
||||||
auto_resolve_locks: true,
|
auto_resolve_locks: true,
|
||||||
|
auto_resolve_regions: true,
|
||||||
};
|
};
|
||||||
let stream = request.retry_response_stream(pd_client, retry);
|
let stream = request.retry_response_stream(pd_client, retry);
|
||||||
|
|
||||||
|
|
|
@ -584,6 +584,11 @@ impl TransactionOptions {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn no_resolve_regions(mut self) -> TransactionOptions {
|
||||||
|
self.retry_options.auto_resolve_regions = false;
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
pub fn no_retry(mut self) -> TransactionOptions {
|
pub fn no_retry(mut self) -> TransactionOptions {
|
||||||
self.retry_options.region_backoff = Backoff::no_backoff();
|
self.retry_options.region_backoff = Backoff::no_backoff();
|
||||||
self.retry_options.lock_backoff = Backoff::no_backoff();
|
self.retry_options.lock_backoff = Backoff::no_backoff();
|
||||||
|
|
Loading…
Reference in New Issue