3939import org .tikv .common .log .SlowLogEmptyImpl ;
4040import org .tikv .common .log .SlowLogSpan ;
4141import org .tikv .common .util .ChannelFactory ;
42- import org .tikv .common .util .Pair ;
4342import org .tikv .kvproto .Kvrpcpb ;
4443import org .tikv .kvproto .Metapb ;
4544import org .tikv .kvproto .TikvGrpc ;
@@ -143,15 +142,6 @@ public boolean onStoreUnreachable(SlowLog slowLog) {
143142 return true ;
144143 }
145144
146- if (store .getProxyStore () == null && store .isReachable ()) {
147- if (store .isReachable ()) {
148- logger .info (
149- String .format (
150- "store[%d] for region[%d] is reachable, retry" , store .getId (), region .getId ()));
151- return true ;
152- }
153- }
154-
155145 // seek an available leader store to send request
156146 Boolean result = seekLeaderStore (slowLog );
157147 if (result != null ) {
@@ -206,26 +196,8 @@ private Boolean seekLeaderStore(SlowLog slowLog) {
206196
207197 logger .info (String .format ("try switch leader: region[%d]" , region .getId ()));
208198
209- Pair <Metapb .Peer , Boolean > pair = switchLeaderStore ();
210- Metapb .Peer peer = pair .first ;
211- boolean exceptionEncountered = pair .second ;
212- if (peer == null ) {
213- if (!exceptionEncountered ) {
214- // all response returned normally, the leader is not elected, just wait until it is ready.
215- logger .info (
216- String .format (
217- "leader for region[%d] is not elected, just wait until it is ready" ,
218- region .getId ()));
219- return true ;
220- } else {
221- // no leader found, some response does not return normally, there may be network
222- // partition.
223- logger .warn (
224- String .format (
225- "leader for region[%d] is not found, it is possible that network partition occurred" ,
226- region .getId ()));
227- }
228- } else {
199+ Metapb .Peer peer = switchLeaderStore ();
200+ if (peer != null ) {
229201 // we found a leader
230202 TiStore currentLeaderStore = regionManager .getStoreById (peer .getStoreId ());
231203 if (currentLeaderStore .isReachable ()) {
@@ -240,6 +212,12 @@ private Boolean seekLeaderStore(SlowLog slowLog) {
240212 updateClientStub ();
241213 return true ;
242214 }
215+ } else {
216+ // no leader found, some response does not return normally, there may be network partition.
217+ logger .warn (
218+ String .format (
219+ "leader for region[%d] is not found, it is possible that network partition occurred" ,
220+ region .getId ()));
243221 }
244222 } finally {
245223 switchLeaderDurationTimer .observeDuration ();
@@ -272,7 +250,7 @@ private boolean seekProxyStore(SlowLog slowLog) {
272250 }
273251
274252 // first: leader peer, second: true if any responses returned with grpc error
275- private Pair < Metapb .Peer , Boolean > switchLeaderStore () {
253+ private Metapb .Peer switchLeaderStore () {
276254 List <SwitchLeaderTask > responses = new LinkedList <>();
277255 for (Metapb .Peer peer : region .getFollowerList ()) {
278256 ByteString key = region .getStartKey ();
@@ -290,7 +268,6 @@ private Pair<Metapb.Peer, Boolean> switchLeaderStore() {
290268 ListenableFuture <Kvrpcpb .RawGetResponse > task = stub .rawGet (rawGetRequest );
291269 responses .add (new SwitchLeaderTask (task , peer ));
292270 }
293- boolean exceptionEncountered = false ;
294271 while (true ) {
295272 try {
296273 Thread .sleep (2 );
@@ -310,15 +287,14 @@ private Pair<Metapb.Peer, Boolean> switchLeaderStore() {
310287 // the peer is leader
311288 logger .info (
312289 String .format ("rawGet response indicates peer[%d] is leader" , task .peer .getId ()));
313- return Pair . create ( task .peer , exceptionEncountered ) ;
290+ return task .peer ;
314291 }
315292 }
316293 } catch (Exception ignored ) {
317- exceptionEncountered = true ;
318294 }
319295 }
320296 if (unfinished .isEmpty ()) {
321- return Pair . create ( null , exceptionEncountered ) ;
297+ return null ;
322298 }
323299 responses = unfinished ;
324300 }
0 commit comments