From af550df8f270b26bf67a6afe363739b2ae2456f5 Mon Sep 17 00:00:00 2001 From: Reid Chan Date: Fri, 18 Aug 2017 00:09:10 +0800 Subject: [PATCH] HBASE-18609 Apply HBASE-15511 in code base --- .../java/org/apache/hadoop/hbase/client/AsyncAdmin.java | 16 ++++++++++++++-- .../java/org/apache/hadoop/hbase/client/HBaseAdmin.java | 16 ++++++++++++---- .../apache/hadoop/hbase/client/RawAsyncHBaseAdmin.java | 4 ++++ .../hadoop/hbase/rest/StorageClusterStatusResource.java | 7 ++++++- .../hbase/rest/StorageClusterVersionResource.java | 9 +++++++-- .../hadoop/hbase/master/RegionPlacementMaintainer.java | 7 ++++++- .../main/java/org/apache/hadoop/hbase/tool/Canary.java | 13 +++++++++++-- .../java/org/apache/hadoop/hbase/util/HBaseFsck.java | 7 ++++++- .../org/apache/hadoop/hbase/util/HBaseFsckRepair.java | 8 +++++++- .../java/org/apache/hadoop/hbase/util/RegionMover.java | 17 ++++++++++++++--- .../org/apache/hadoop/hbase/util/RegionSplitter.java | 6 +++++- 11 files changed, 92 insertions(+), 18 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncAdmin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncAdmin.java index 4b3381247c..f80ab76a23 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncAdmin.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncAdmin.java @@ -845,20 +845,32 @@ public interface AsyncAdmin { * @return current master server name wrapped by {@link CompletableFuture} */ default CompletableFuture getMaster() { - return getClusterStatus().thenApply(ClusterStatus::getMaster); + ClusterStatus.Options options = Options.getDefaultOptions(); + options.excludeBackupMasters().excludeBalancerOn().excludeClusterId() + .excludeDeadServers().excludeHBaseVersion().excludeLiveServers() + .excludeMasterCoprocessors().excludeRegionState(); + return getClusterStatus(options).thenApply(ClusterStatus::getMaster); } /** * @return current backup master list wrapped by {@link CompletableFuture} */ default CompletableFuture> getBackupMasters() { - return getClusterStatus().thenApply(ClusterStatus::getBackupMasters); + ClusterStatus.Options options = Options.getDefaultOptions(); + options.excludeMaster().excludeBalancerOn().excludeClusterId() + .excludeDeadServers().excludeHBaseVersion().excludeLiveServers() + .excludeMasterCoprocessors().excludeRegionState(); + return getClusterStatus(options).thenApply(ClusterStatus::getBackupMasters); } /** * @return current live region servers list wrapped by {@link CompletableFuture} */ default CompletableFuture> getRegionServers() { + ClusterStatus.Options options = Options.getDefaultOptions(); + options.excludeMaster().excludeBalancerOn().excludeClusterId() + .excludeDeadServers().excludeHBaseVersion().excludeBackupMasters() + .excludeMasterCoprocessors().excludeRegionState(); return getClusterStatus().thenApply(ClusterStatus::getServers); } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java index 11f3273c0b..a748d9b921 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java @@ -2516,7 +2516,11 @@ public class HBaseAdmin implements Admin { @Override public String[] getMasterCoprocessors() { try { - return getClusterStatus().getMasterCoprocessors(); + ClusterStatus.Options options = Options.getDefaultOptions(); + options.excludeBackupMasters().excludeBalancerOn().excludeClusterId() + .excludeDeadServers().excludeHBaseVersion().excludeLiveServers() + .excludeMaster().excludeRegionState(); + return getClusterStatus(options).getMasterCoprocessors(); } catch (IOException e) { LOG.error("Could not getClusterStatus()",e); return null; @@ -3221,13 +3225,17 @@ public class HBaseAdmin implements Admin { @Override public void updateConfiguration() throws IOException { - for (ServerName server : this.getClusterStatus().getServers()) { + ClusterStatus.Options options = Options.getDefaultOptions(); + options.excludeBalancerOn().excludeClusterId().excludeDeadServers() + .excludeHBaseVersion().excludeMasterCoprocessors().excludeRegionState(); + ClusterStatus status = getClusterStatus(options); + for (ServerName server : status.getServers()) { updateConfiguration(server); } - updateConfiguration(this.getClusterStatus().getMaster()); + updateConfiguration(status.getMaster()); - for (ServerName server : this.getClusterStatus().getBackupMasters()) { + for (ServerName server : status.getBackupMasters()) { updateConfiguration(server); } } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.java index ba68a969c9..1ea5ed0b9a 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.java @@ -2484,6 +2484,10 @@ public class RawAsyncHBaseAdmin implements AsyncAdmin { @Override public CompletableFuture updateConfiguration() { CompletableFuture future = new CompletableFuture(); + ClusterStatus.Options options = Options.getDefaultOptions(); + options.excludeBalancerOn().excludeClusterId() + .excludeDeadServers().excludeHBaseVersion() + .excludeMasterCoprocessors().excludeRegionState(); getClusterStatus().whenComplete( (status, err) -> { if (err != null) { diff --git a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/StorageClusterStatusResource.java b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/StorageClusterStatusResource.java index 27977c3db0..0063350d32 100644 --- a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/StorageClusterStatusResource.java +++ b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/StorageClusterStatusResource.java @@ -34,6 +34,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hbase.classification.InterfaceAudience; import org.apache.hadoop.hbase.ClusterStatus; +import org.apache.hadoop.hbase.ClusterStatus.Options; import org.apache.hadoop.hbase.ServerLoad; import org.apache.hadoop.hbase.RegionLoad; import org.apache.hadoop.hbase.ServerName; @@ -68,7 +69,11 @@ public class StorageClusterStatusResource extends ResourceBase { } servlet.getMetrics().incrementRequests(1); try { - ClusterStatus status = servlet.getAdmin().getClusterStatus(); + ClusterStatus.Options options = Options.getDefaultOptions(); + options.excludeBackupMasters().excludeBalancerOn().excludeClusterId() + .excludeHBaseVersion().excludeMasterCoprocessors().excludeRegionState() + .excludeMaster(); + ClusterStatus status = servlet.getAdmin().getClusterStatus(options); StorageClusterStatusModel model = new StorageClusterStatusModel(); model.setRegions(status.getRegionsCount()); model.setRequests(status.getRequestsCount()); diff --git a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/StorageClusterVersionResource.java b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/StorageClusterVersionResource.java index b9fb5d42a8..6aa3e49ea7 100644 --- a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/StorageClusterVersionResource.java +++ b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/StorageClusterVersionResource.java @@ -31,7 +31,8 @@ import javax.ws.rs.core.Response.ResponseBuilder; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - +import org.apache.hadoop.hbase.ClusterStatus; +import org.apache.hadoop.hbase.ClusterStatus.Options; import org.apache.hadoop.hbase.classification.InterfaceAudience; import org.apache.hadoop.hbase.rest.model.StorageClusterVersionModel; @@ -64,7 +65,11 @@ public class StorageClusterVersionResource extends ResourceBase { servlet.getMetrics().incrementRequests(1); try { StorageClusterVersionModel model = new StorageClusterVersionModel(); - model.setVersion(servlet.getAdmin().getClusterStatus().getHBaseVersion()); + ClusterStatus.Options options = Options.getDefaultOptions(); + options.excludeBackupMasters().excludeBalancerOn().excludeClusterId() + .excludeDeadServers().excludeLiveServers().excludeMaster() + .excludeMasterCoprocessors().excludeRegionState(); + model.setVersion(servlet.getAdmin().getClusterStatus(options).getHBaseVersion()); ResponseBuilder response = Response.ok(model); response.cacheControl(cacheControl); servlet.getMetrics().incrementSucessfulGetRequests(1); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionPlacementMaintainer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionPlacementMaintainer.java index ffc3e5b51f..4159348f16 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionPlacementMaintainer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionPlacementMaintainer.java @@ -42,6 +42,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hbase.classification.InterfaceAudience; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.hbase.ClusterStatus; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.HRegionInfo; @@ -204,9 +205,13 @@ public class RegionPlacementMaintainer { assignmentSnapshot.getRegionToRegionServerMap(); // Get the all the region servers + ClusterStatus.Options options = ClusterStatus.Options.getDefaultOptions(); + options.excludeBackupMasters().excludeBalancerOn().excludeClusterId() + .excludeDeadServers().excludeHBaseVersion().excludeMaster() + .excludeMasterCoprocessors().excludeRegionState(); List servers = new ArrayList<>(); try (Admin admin = this.connection.getAdmin()) { - servers.addAll(admin.getClusterStatus().getServers()); + servers.addAll(admin.getClusterStatus(options).getServers()); } LOG.info("Start to generate assignment plan for " + numRegions + diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/tool/Canary.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/tool/Canary.java index 3051ab4235..20d473eeaf 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/tool/Canary.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/tool/Canary.java @@ -55,6 +55,7 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.AuthUtil; import org.apache.hadoop.hbase.ChoreService; import org.apache.hadoop.hbase.ClusterStatus; +import org.apache.hadoop.hbase.ClusterStatus.Options; import org.apache.hadoop.hbase.DoNotRetryIOException; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HColumnDescriptor; @@ -1187,7 +1188,11 @@ public final class Canary implements Tool { admin.enableTable(writeTableName); } - ClusterStatus status = admin.getClusterStatus(); + ClusterStatus.Options options = Options.getDefaultOptions(); + options.excludeBackupMasters().excludeBalancerOn().excludeClusterId() + .excludeDeadServers().excludeHBaseVersion().excludeMasterCoprocessors() + .excludeRegionState(); + ClusterStatus status = admin.getClusterStatus(options); int numberOfServers = status.getServersSize(); if (status.getServers().contains(status.getMaster())) { numberOfServers -= 1; @@ -1491,7 +1496,11 @@ public final class Canary implements Tool { } //get any live regionservers not serving any regions - for (ServerName rs : this.admin.getClusterStatus().getServers()) { + ClusterStatus.Options options = Options.getDefaultOptions(); + options.excludeBackupMasters().excludeBalancerOn().excludeClusterId() + .excludeDeadServers().excludeHBaseVersion().excludeMaster() + .excludeMasterCoprocessors().excludeRegionState(); + for (ServerName rs : this.admin.getClusterStatus(options).getServers()) { String rsName = rs.getHostname(); if (!rsAndRMap.containsKey(rsName)) { rsAndRMap.put(rsName, Collections.emptyList()); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java index ff5d482799..c3540cae7e 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java @@ -96,6 +96,7 @@ import org.apache.hadoop.hbase.RegionLocations; import org.apache.hadoop.hbase.ServerName; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.ZooKeeperConnectionException; +import org.apache.hadoop.hbase.ClusterStatus.Options; import org.apache.hadoop.hbase.classification.InterfaceAudience; import org.apache.hadoop.hbase.classification.InterfaceStability; import org.apache.hadoop.hbase.client.Admin; @@ -2438,8 +2439,12 @@ public class HBaseFsck extends Configured implements Closeable { } LOG.info("Patching hbase:meta with .regioninfo: " + hbi.getHdfsHRI()); int numReplicas = admin.getTableDescriptor(hbi.getTableName()).getRegionReplication(); + ClusterStatus.Options options = Options.getDefaultOptions(); + options.excludeBackupMasters().excludeBalancerOn().excludeClusterId() + .excludeDeadServers().excludeHBaseVersion().excludeMaster() + .excludeMasterCoprocessors().excludeRegionState(); HBaseFsckRepair.fixMetaHoleOnlineAndAddReplicas(getConf(), hbi.getHdfsHRI(), - admin.getClusterStatus().getServers(), numReplicas); + admin.getClusterStatus(options).getServers(), numReplicas); tryAssignmentRepair(hbi, "Trying to reassign region..."); } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsckRepair.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsckRepair.java index 961e8a0d23..0c032ebd68 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsckRepair.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/HBaseFsckRepair.java @@ -27,6 +27,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; +import org.apache.hadoop.hbase.ClusterStatus; +import org.apache.hadoop.hbase.ClusterStatus.Options; import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.MetaTableAccessor; @@ -123,7 +125,11 @@ public class HBaseFsckRepair { while (EnvironmentEdgeManager.currentTime() < expiration) { try { boolean inTransition = false; - for (RegionState rs: admin.getClusterStatus().getRegionsInTransition()) { + ClusterStatus.Options options = Options.getDefaultOptions(); + options.excludeBackupMasters().excludeBalancerOn().excludeClusterId() + .excludeDeadServers().excludeHBaseVersion().excludeLiveServers() + .excludeMaster().excludeMasterCoprocessors(); + for (RegionState rs: admin.getClusterStatus(options).getRegionsInTransition()) { if (rs.getRegion().equals(region)) { inTransition = true; break; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionMover.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionMover.java index a9a53b8333..0bc60c8cf9 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionMover.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionMover.java @@ -45,6 +45,8 @@ import org.apache.commons.cli.CommandLine; import org.apache.hadoop.conf.Configuration; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hbase.ClusterStatus; +import org.apache.hadoop.hbase.ClusterStatus.Options; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.HRegionInfo; @@ -745,8 +747,13 @@ public class RegionMover extends AbstractHBaseTool { * @throws IOException */ private void stripMaster(ArrayList regionServers, Admin admin) throws IOException { - String masterHostname = admin.getClusterStatus().getMaster().getHostname(); - int masterPort = admin.getClusterStatus().getMaster().getPort(); + ClusterStatus.Options options = Options.getDefaultOptions(); + options.excludeBackupMasters().excludeBalancerOn().excludeClusterId() + .excludeDeadServers().excludeHBaseVersion().excludeLiveServers() + .excludeMasterCoprocessors().excludeRegionState(); + ClusterStatus status = admin.getClusterStatus(options); + String masterHostname = status.getMaster().getHostname(); + int masterPort = status.getMaster().getPort(); try { stripServer(regionServers, masterHostname, masterPort); } catch (Exception e) { @@ -821,7 +828,11 @@ public class RegionMover extends AbstractHBaseTool { * @throws IOException */ private ArrayList getServers(Admin admin) throws IOException { - ArrayList serverInfo = new ArrayList<>(admin.getClusterStatus().getServers()); + ClusterStatus.Options options = Options.getDefaultOptions(); + options.excludeBackupMasters().excludeBalancerOn().excludeClusterId() + .excludeDeadServers().excludeHBaseVersion().excludeMaster() + .excludeMasterCoprocessors().excludeRegionState(); + ArrayList serverInfo = new ArrayList<>(admin.getClusterStatus(options).getServers()); ArrayList regionServers = new ArrayList<>(serverInfo.size()); for (ServerName server : serverInfo) { regionServers.add(server.getServerName()); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionSplitter.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionSplitter.java index d487eb09e1..60361b3f90 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionSplitter.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RegionSplitter.java @@ -417,7 +417,11 @@ public class RegionSplitter { */ private static int getRegionServerCount(final Connection connection) throws IOException { try (Admin admin = connection.getAdmin()) { - ClusterStatus status = admin.getClusterStatus(); + ClusterStatus.Options options = ClusterStatus.Options.getDefaultOptions(); + options.excludeBackupMasters().excludeBalancerOn().excludeBalancerOn() + .excludeDeadServers().excludeHBaseVersion().excludeMaster() + .excludeMasterCoprocessors().excludeRegionState(); + ClusterStatus status = admin.getClusterStatus(options); Collection servers = status.getServers(); return servers == null || servers.isEmpty()? 0: servers.size(); } -- 2.11.0 (Apple Git-81)