You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by md...@apache.org on 2018/07/20 19:50:55 UTC
[03/29] hbase git commit: HBASE-20697 Can't cache All region
locations of the specify table by calling
table.getRegionLocator().getAllRegionLocations()
HBASE-20697 Can't cache All region locations of the specify table by calling table.getRegionLocator().getAllRegionLocations()
Signed-off-by: Guanghao Zhang <zg...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/1e065095
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/1e065095
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/1e065095
Branch: refs/heads/HBASE-20749
Commit: 1e0650955a58bfaf28e8075353f894141226a844
Parents: d7561ce
Author: zhaoyuan <zh...@youzan.com>
Authored: Tue Jul 10 15:03:05 2018 +0800
Committer: Guanghao Zhang <zg...@apache.org>
Committed: Wed Jul 11 10:52:06 2018 +0800
----------------------------------------------------------------------
.../org/apache/hadoop/hbase/RegionLocations.java | 11 ++++++-----
.../apache/hadoop/hbase/client/HRegionLocator.java | 16 ++++++----------
.../hadoop/hbase/client/TestFromClientSide.java | 7 +++++++
3 files changed, 19 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/1e065095/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionLocations.java
----------------------------------------------------------------------
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 8889dc2..fd6f3c7 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,8 +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 +76,12 @@ public class RegionLocations {
}
}
}
+ for (HRegionLocation loc : this.locations) {
+ if (loc != null && loc.getServerName() != null){
+ numNonNullElements++;
+ }
+ }
+ this.numNonNullElements = numNonNullElements;
}
public RegionLocations(Collection<HRegionLocation> locations) {
http://git-wip-us.apache.org/repos/asf/hbase/blob/1e065095/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HRegionLocator.java
----------------------------------------------------------------------
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 0231370..2559114 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
@@ -27,7 +27,6 @@ import org.apache.hadoop.hbase.HRegionInfo;
import org.apache.hadoop.hbase.HRegionLocation;
import org.apache.hadoop.hbase.MetaTableAccessor;
import org.apache.hadoop.hbase.RegionLocations;
-import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.util.Pair;
import org.apache.yetus.audience.InterfaceAudience;
@@ -85,15 +84,12 @@ public class HRegionLocator implements RegionLocator {
@Override
public List<HRegionLocation> getAllRegionLocations() throws IOException {
TableName tableName = getName();
- List<Pair<RegionInfo, ServerName>> locations =
- MetaTableAccessor.getTableRegionsAndLocations(this.connection, tableName);
- ArrayList<HRegionLocation> regions = new ArrayList<>(locations.size());
- for (Pair<RegionInfo, ServerName> entry : locations) {
- regions.add(new HRegionLocation(entry.getFirst(), entry.getSecond()));
-
- }
- if (regions.size() > 0) {
- connection.cacheLocation(tableName, new RegionLocations(regions));
+ ArrayList<HRegionLocation> regions = new ArrayList<>();
+ for (RegionLocations locations : listRegionLocations()) {
+ for (HRegionLocation location : locations.getRegionLocations()) {
+ regions.add(location);
+ }
+ connection.cacheLocation(tableName, locations);
}
return regions;
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/1e065095/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
index 13fa59f..c4285b4 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
@@ -6417,6 +6417,13 @@ public class TestFromClientSide {
int number = ((ConnectionImplementation)admin.getConnection())
.getNumberOfCachedRegionLocations(htd.getTableName());
assertEquals(results.size(), number);
+ ConnectionImplementation conn = ((ConnectionImplementation)admin.getConnection());
+ assertNotNull("Can't get cached location for row aaa",
+ conn.getCachedLocation(htd.getTableName(),Bytes.toBytes("aaa")));
+ for(byte[] startKey:HBaseTestingUtility.KEYS_FOR_HBA_CREATE_TABLE){
+ assertNotNull("Can't get cached location for row "+
+ Bytes.toString(startKey),(conn.getCachedLocation(htd.getTableName(),startKey)));
+ }
}
@Test