You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2015/06/24 06:24:54 UTC
hbase git commit: HBASE-13923 Loaded region coprocessors are not
reported in shell status command (Ashish Singhi)
Repository: hbase
Updated Branches:
refs/heads/branch-1 92f4e30f4 -> 41aa84124
HBASE-13923 Loaded region coprocessors are not reported in shell status command (Ashish Singhi)
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/41aa8412
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/41aa8412
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/41aa8412
Branch: refs/heads/branch-1
Commit: 41aa8412410fec33242afa40bb7c52c511eb30e2
Parents: 92f4e30
Author: tedyu <yu...@gmail.com>
Authored: Tue Jun 23 21:24:55 2015 -0700
Committer: tedyu <yu...@gmail.com>
Committed: Tue Jun 23 21:24:55 2015 -0700
----------------------------------------------------------------------
.../hbase/regionserver/HRegionServer.java | 16 ++++++---
.../hbase/coprocessor/TestClassLoading.java | 37 +++++++++++++-------
2 files changed, 36 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/41aa8412/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
index af3cb5e..38e62a7 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
@@ -115,6 +115,7 @@ import org.apache.hadoop.hbase.protobuf.generated.ClusterStatusProtos;
import org.apache.hadoop.hbase.protobuf.generated.ClusterStatusProtos.RegionLoad;
import org.apache.hadoop.hbase.protobuf.generated.ClusterStatusProtos.RegionStoreSequenceIds;
import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.Coprocessor;
+import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.Coprocessor.Builder;
import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.NameStringPair;
import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionServerInfo;
import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;
@@ -1169,17 +1170,22 @@ public class HRegionServer extends HasThread implements
serverLoad.setUsedHeapMB((int)(memory.getUsed() / 1024 / 1024));
serverLoad.setMaxHeapMB((int) (memory.getMax() / 1024 / 1024));
Set<String> coprocessors = getWAL(null).getCoprocessorHost().getCoprocessors();
+ Builder coprocessorBuilder = Coprocessor.newBuilder();
for (String coprocessor : coprocessors) {
- serverLoad.addCoprocessors(
- Coprocessor.newBuilder().setName(coprocessor).build());
+ serverLoad.addCoprocessors(coprocessorBuilder.setName(coprocessor).build());
}
RegionLoad.Builder regionLoadBldr = RegionLoad.newBuilder();
RegionSpecifier.Builder regionSpecifier = RegionSpecifier.newBuilder();
for (Region region : regions) {
+ Set<String> regionCoprocessors = region.getCoprocessorHost().getCoprocessors();
+ Iterator<String> iterator = regionCoprocessors.iterator();
+ while (iterator.hasNext()) {
+ serverLoad.addCoprocessors(coprocessorBuilder.setName(iterator.next()).build());
+ }
serverLoad.addRegionLoads(createRegionLoad(region, regionLoadBldr, regionSpecifier));
- for (String coprocessor :
- getWAL(region.getRegionInfo()).getCoprocessorHost().getCoprocessors()) {
- serverLoad.addCoprocessors(Coprocessor.newBuilder().setName(coprocessor).build());
+ for (String coprocessor : getWAL(region.getRegionInfo()).getCoprocessorHost()
+ .getCoprocessors()) {
+ serverLoad.addCoprocessors(coprocessorBuilder.setName(coprocessor).build());
}
}
serverLoad.setReportStartTime(reportStartTime);
http://git-wip-us.apache.org/repos/asf/hbase/blob/41aa8412/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestClassLoading.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestClassLoading.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestClassLoading.java
index 632e9c2..2a139da 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestClassLoading.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestClassLoading.java
@@ -74,6 +74,10 @@ public class TestClassLoading {
regionServerCoprocessor.getSimpleName()
};
+ private static final String[] masterRegionServerSystemCoprocessors = new String[] {
+ regionCoprocessor1.getSimpleName(), MultiRowMutationEndpoint.class.getSimpleName(),
+ regionServerCoprocessor.getSimpleName() };
+
@BeforeClass
public static void setUpBeforeClass() throws Exception {
Configuration conf = TEST_UTIL.getConfiguration();
@@ -446,7 +450,7 @@ public class TestClassLoading {
// This was a test for HBASE-4070.
// We are removing coprocessors from region load in HBASE-5258.
// Therefore, this test now only checks system coprocessors.
- assertAllRegionServers(regionServerSystemCoprocessors,null);
+ assertAllRegionServers(null);
}
/**
@@ -477,20 +481,18 @@ public class TestClassLoading {
return serverLoadHashMap;
}
- void assertAllRegionServers(String[] expectedCoprocessors, String tableName)
- throws InterruptedException {
+ void assertAllRegionServers(String tableName) throws InterruptedException {
Map<ServerName, ServerLoad> servers;
String[] actualCoprocessors = null;
boolean success = false;
- for(int i = 0; i < 5; i++) {
- if (tableName == null) {
- //if no tableName specified, use all servers.
- servers =
- TEST_UTIL.getMiniHBaseCluster().getMaster().getServerManager().
- getOnlineServers();
- } else {
- servers = serversForTable(tableName);
- }
+ String[] expectedCoprocessors = regionServerSystemCoprocessors;
+ if (tableName == null) {
+ // if no tableName specified, use all servers.
+ servers = TEST_UTIL.getMiniHBaseCluster().getMaster().getServerManager().getOnlineServers();
+ } else {
+ servers = serversForTable(tableName);
+ }
+ for (int i = 0; i < 5; i++) {
boolean any_failed = false;
for(Map.Entry<ServerName,ServerLoad> server: servers.entrySet()) {
actualCoprocessors = server.getValue().getRsCoprocessors();
@@ -499,8 +501,10 @@ public class TestClassLoading {
Arrays.toString(actualCoprocessors) +
" ; expected: " + Arrays.toString(expectedCoprocessors));
any_failed = true;
+ expectedCoprocessors = switchExpectedCoprocessors(expectedCoprocessors);
break;
}
+ expectedCoprocessors = switchExpectedCoprocessors(expectedCoprocessors);
}
if (any_failed == false) {
success = true;
@@ -512,6 +516,15 @@ public class TestClassLoading {
assertTrue(success);
}
+ private String[] switchExpectedCoprocessors(String[] expectedCoprocessors) {
+ if (Arrays.equals(regionServerSystemCoprocessors, expectedCoprocessors)) {
+ expectedCoprocessors = masterRegionServerSystemCoprocessors;
+ } else {
+ expectedCoprocessors = regionServerSystemCoprocessors;
+ }
+ return expectedCoprocessors;
+ }
+
@Test
public void testMasterCoprocessorsReported() {
// HBASE 4070: Improve region server metrics to report loaded coprocessors