Skip to content

Commit 490b4a1

Browse files
authored
invalidate all region cache on store when store id not found (#170)
Signed-off-by: birdstorm <samuelwyf@hotmail.com>
1 parent c6398ba commit 490b4a1

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

src/main/java/org/tikv/common/region/RegionManager.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,15 @@ public Pair<TiRegion, Store> getRegionStorePairByKey(
129129
if (isReplicaRead) {
130130
Peer peer = region.getCurrentFollower();
131131
store = cache.getStoreById(peer.getStoreId(), backOffer);
132+
if (store == null) {
133+
cache.invalidateRegion(region);
134+
}
132135
} else {
133136
Peer leader = region.getLeader();
134137
store = cache.getStoreById(leader.getStoreId(), backOffer);
138+
if (store == null) {
139+
cache.clearAll();
140+
}
135141
}
136142
} else {
137143
outerLoop:
@@ -316,8 +322,8 @@ public synchronized void invalidateAllRegionForStore(long storeId) {
316322

317323
// remove region
318324
for (TiRegion r : regionToRemove) {
319-
regionCache.remove(r.getId());
320325
keyToRegionIdCache.remove(makeRange(r.getStartKey(), r.getEndKey()));
326+
regionCache.remove(r.getId());
321327
}
322328
}
323329

@@ -340,5 +346,10 @@ public synchronized Store getStoreById(long id, BackOffer backOffer) {
340346
throw new GrpcException(e);
341347
}
342348
}
349+
350+
public synchronized void clearAll() {
351+
keyToRegionIdCache.clear();
352+
regionCache.clear();
353+
}
343354
}
344355
}

0 commit comments

Comments
 (0)