From a71b6676ac8afd72bfbaf73f19a557720164e305 Mon Sep 17 00:00:00 2001 From: zhaoyuan Date: Thu, 14 Jun 2018 15:30:22 +0800 Subject: [PATCH] update --- .../java/org/apache/hadoop/hbase/RegionLocations.java | 9 +++++---- .../org/apache/hadoop/hbase/client/HRegionLocator.java | 15 ++++++--------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionLocations.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionLocations.java index 8889dc2baa..6ec9e27b78 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionLocations.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionLocations.java @@ -56,9 +56,6 @@ public class RegionLocations { int index = 0; for (HRegionLocation loc : locations) { if (loc != null) { - if (loc.getServerName() != null) { - numNonNullElements++; - } if (loc.getRegionInfo().getReplicaId() >= maxReplicaId) { maxReplicaId = loc.getRegionInfo().getReplicaId(); maxReplicaIdIndex = index; @@ -66,7 +63,6 @@ public class RegionLocations { } index++; } - this.numNonNullElements = numNonNullElements; // account for the null elements in the array after maxReplicaIdIndex maxReplicaId = maxReplicaId + (locations.length - (maxReplicaIdIndex + 1) ); @@ -81,6 +77,11 @@ public class RegionLocations { } } } + for(HRegionLocation loc:this.locations){ + if(loc != null && loc.getServerName() != null) + numNonNullElements ++; + } + this.numNonNullElements = numNonNullElements; } public RegionLocations(Collection locations) { diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HRegionLocator.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HRegionLocator.java index 0231370b5d..4e9c7b28cb 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HRegionLocator.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HRegionLocator.java @@ -85,15 +85,12 @@ public class HRegionLocator implements RegionLocator { @Override public List getAllRegionLocations() throws IOException { TableName tableName = getName(); - List> locations = - MetaTableAccessor.getTableRegionsAndLocations(this.connection, tableName); - ArrayList regions = new ArrayList<>(locations.size()); - for (Pair entry : locations) { - regions.add(new HRegionLocation(entry.getFirst(), entry.getSecond())); - - } - if (regions.size() > 0) { - connection.cacheLocation(tableName, new RegionLocations(regions)); + ArrayList regions = new ArrayList<>(); + for (RegionLocations locations : listRegionLocations()) { + for (HRegionLocation location : locations.getRegionLocations()) { + regions.add(location); + } + connection.cacheLocation(tableName, locations); } return regions; } -- 2.13.3