Skip to content

Commit 6d318ca

Browse files
committed
Fix stale region cache with no leader
Signed-off-by: yongman <[email protected]>
1 parent c6110dd commit 6d318ca

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

src/region_cache.rs

+7-2
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ impl<C: RetryClientTrait> RegionCache<C> {
8585
.get(&candidate_region_ver_id)
8686
.unwrap();
8787

88-
if region.contains(key) {
88+
// Region in cache maybe stale if the region has not been elected leader yet during start.
89+
if region.contains(key) && region.leader.is_some() {
8990
return Ok(region.clone());
9091
}
9192
}
@@ -102,7 +103,11 @@ impl<C: RetryClientTrait> RegionCache<C> {
102103
let ver_id = region_cache_guard.id_to_ver_id.get(&id);
103104
if let Some(ver_id) = ver_id {
104105
let region = region_cache_guard.ver_id_to_region.get(ver_id).unwrap();
105-
return Ok(region.clone());
106+
107+
// Region in cache maybe stale if the region has not been elected leader yet during start.
108+
if region.leader.is_some() {
109+
return Ok(region.clone());
110+
}
106111
}
107112

108113
// check concurrent requests

0 commit comments

Comments
 (0)