saintstack commented on a change in pull request #2652:
URL: https://github.com/apache/hbase/pull/2652#discussion_r522642007



##########
File path: 
hbase-client/src/main/java/org/apache/hadoop/hbase/client/ZKConnectionRegistry.java
##########
@@ -133,13 +133,17 @@ private static void tryComplete(MutableInt remaining, 
HRegionLocation[] locs,
       ServerName.valueOf(snProto.getHostName(), snProto.getPort(), 
snProto.getStartCode()));
   }
 
-  private void getMetaRegionLocation(CompletableFuture<RegionLocations> future,
+  @VisibleForTesting
+  void getMetaRegionLocation(CompletableFuture<RegionLocations> future,
       List<String> metaReplicaZNodes) {
     if (metaReplicaZNodes.isEmpty()) {
       future.completeExceptionally(new IOException("No meta znode available"));
     }
     HRegionLocation[] locs = new HRegionLocation[metaReplicaZNodes.size()];
     MutableInt remaining = new MutableInt(locs.length);
+    // Do NOT use replicaid as index into locations array. The location set 
may not be complete

Review comment:
       Thanks @huaxiangsun . That helps (Its also used here 
https://github.com/apache/hbase/blob/master/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ZKConnectionRegistry.java#L187
 but if error, we don't get to this point because of ArrayOutOfBoundsException).
   
   Let me just do what @apache9 suggests. Looks like there is precedent around 
the handling of this situation. Let me follow the model (even if it means 
double work as you point out).
   
   Will be back in a bit w/ new patch.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to