Apache9 commented on a change in pull request #2652:
URL: https://github.com/apache/hbase/pull/2652#discussion_r522562320
##########
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:
I do not think use index instead of replicaId is the correct way to fix
the problem here.
You should use replicaId, and the problem here is the size of the array is
incorrect. You should find out the maximum replicaId and create the locs array
with maxReplicaId + 1 as its size.
----------------------------------------------------------------
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]