You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2017/04/27 01:30:01 UTC
[2/2] hbase git commit: HBASE-17965 Canary tool should print the
regionserver name on failure
HBASE-17965 Canary tool should print the regionserver name on failure
Signed-off-by: Andrew Purtell <ap...@apache.org>
Conflicts:
hbase-server/src/test/java/org/apache/hadoop/hbase/tool/TestCanaryTool.java
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/78c64c36
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/78c64c36
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/78c64c36
Branch: refs/heads/branch-1
Commit: 78c64c360fe46c7d6da6a831a1f91f2567147a83
Parents: defc25c
Author: Karan Mehta <ka...@gmail.com>
Authored: Wed Apr 26 17:14:02 2017 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Wed Apr 26 18:25:31 2017 -0700
----------------------------------------------------------------------
.../org/apache/hadoop/hbase/tool/Canary.java | 115 +++++--------------
.../hadoop/hbase/tool/TestCanaryTool.java | 7 +-
2 files changed, 32 insertions(+), 90 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/78c64c36/hbase-server/src/main/java/org/apache/hadoop/hbase/tool/Canary.java
----------------------------------------------------------------------
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 c0f545d..137e5da 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
@@ -114,15 +114,15 @@ public final class Canary implements Tool {
public interface Sink {
public long getReadFailureCount();
public long incReadFailureCount();
- public void publishReadFailure(HRegionInfo region, Exception e);
- public void publishReadFailure(HRegionInfo region, HColumnDescriptor column, Exception e);
+ public void publishReadFailure(ServerName serverName, HRegionInfo region, Exception e);
+ public void publishReadFailure(ServerName serverName, HRegionInfo region, HColumnDescriptor column, Exception e);
public void updateReadFailedHostList(HRegionInfo region, String serverName);
public Map<String,String> getReadFailures();
- public void publishReadTiming(HRegionInfo region, HColumnDescriptor column, long msTime);
+ public void publishReadTiming(ServerName serverName, HRegionInfo region, HColumnDescriptor column, long msTime);
public long getWriteFailureCount();
- public void publishWriteFailure(HRegionInfo region, Exception e);
- public void publishWriteFailure(HRegionInfo region, HColumnDescriptor column, Exception e);
- public void publishWriteTiming(HRegionInfo region, HColumnDescriptor column, long msTime);
+ public void publishWriteFailure(ServerName serverName, HRegionInfo region, Exception e);
+ public void publishWriteFailure(ServerName serverName, HRegionInfo region, HColumnDescriptor column, Exception e);
+ public void publishWriteTiming(ServerName serverName, HRegionInfo region, HColumnDescriptor column, long msTime);
public void updateWriteFailedHostList(HRegionInfo region, String serverName);
public Map<String,String> getWriteFailures();
}
@@ -153,16 +153,16 @@ public final class Canary implements Tool {
}
@Override
- public void publishReadFailure(HRegionInfo region, Exception e) {
+ public void publishReadFailure(ServerName serverName, HRegionInfo region, Exception e) {
readFailureCount.incrementAndGet();
- LOG.error(String.format("read from region %s failed", region.getRegionNameAsString()), e);
+ LOG.error(String.format("read from region %s on regionserver %s failed", region.getRegionNameAsString(), serverName), e);
}
@Override
- public void publishReadFailure(HRegionInfo region, HColumnDescriptor column, Exception e) {
+ public void publishReadFailure(ServerName serverName, HRegionInfo region, HColumnDescriptor column, Exception e) {
readFailureCount.incrementAndGet();
- LOG.error(String.format("read from region %s column family %s failed",
- region.getRegionNameAsString(), column.getNameAsString()), e);
+ LOG.error(String.format("read from region %s on regionserver %s column family %s failed",
+ region.getRegionNameAsString(), serverName, column.getNameAsString()), e);
}
@Override
@@ -171,9 +171,9 @@ public final class Canary implements Tool {
}
@Override
- public void publishReadTiming(HRegionInfo region, HColumnDescriptor column, long msTime) {
- LOG.info(String.format("read from region %s column family %s in %dms",
- region.getRegionNameAsString(), column.getNameAsString(), msTime));
+ public void publishReadTiming(ServerName serverName, HRegionInfo region, HColumnDescriptor column, long msTime) {
+ LOG.info(String.format("read from region %s on regionserver %s column family %s in %dms",
+ region.getRegionNameAsString(), serverName, column.getNameAsString(), msTime));
}
@Override
@@ -192,22 +192,22 @@ public final class Canary implements Tool {
}
@Override
- public void publishWriteFailure(HRegionInfo region, Exception e) {
+ public void publishWriteFailure(ServerName serverName, HRegionInfo region, Exception e) {
writeFailureCount.incrementAndGet();
- LOG.error(String.format("write to region %s failed", region.getRegionNameAsString()), e);
+ LOG.error(String.format("write to region %s on regionserver %s failed", region.getRegionNameAsString(), serverName), e);
}
@Override
- public void publishWriteFailure(HRegionInfo region, HColumnDescriptor column, Exception e) {
+ public void publishWriteFailure(ServerName serverName, HRegionInfo region, HColumnDescriptor column, Exception e) {
writeFailureCount.incrementAndGet();
- LOG.error(String.format("write to region %s column family %s failed",
- region.getRegionNameAsString(), column.getNameAsString()), e);
+ LOG.error(String.format("write to region %s on regionserver %s column family %s failed",
+ region.getRegionNameAsString(), serverName, column.getNameAsString()), e);
}
@Override
- public void publishWriteTiming(HRegionInfo region, HColumnDescriptor column, long msTime) {
- LOG.info(String.format("write to region %s column family %s in %dms",
- region.getRegionNameAsString(), column.getNameAsString(), msTime));
+ public void publishWriteTiming(ServerName serverName, HRegionInfo region, HColumnDescriptor column, long msTime) {
+ LOG.info(String.format("write to region %s on regionserver %s column family %s in %dms",
+ region.getRegionNameAsString(), serverName, column.getNameAsString(), msTime));
}
@Override
@@ -330,7 +330,7 @@ public final class Canary implements Tool {
tableDesc = table.getTableDescriptor();
} catch (IOException e) {
LOG.debug("sniffRegion failed", e);
- sink.publishReadFailure(region, e);
+ sink.publishReadFailure(serverName, region, e);
if (table != null) {
try {
table.close();
@@ -384,9 +384,9 @@ public final class Canary implements Tool {
rs.next();
}
stopWatch.stop();
- sink.publishReadTiming(region, column, stopWatch.getTime());
+ sink.publishReadTiming(serverName, region, column, stopWatch.getTime());
} catch (Exception e) {
- sink.publishReadFailure(region, column, e);
+ sink.publishReadFailure(serverName, region, column, e);
sink.updateReadFailedHostList(region, serverName.getHostname());
} finally {
if (rs != null) {
@@ -436,14 +436,14 @@ public final class Canary implements Tool {
long startTime = System.currentTimeMillis();
table.put(put);
long time = System.currentTimeMillis() - startTime;
- sink.publishWriteTiming(region, column, time);
+ sink.publishWriteTiming(serverName, region, column, time);
} catch (Exception e) {
- sink.publishWriteFailure(region, column, e);
+ sink.publishWriteFailure(serverName, region, column, e);
}
}
table.close();
} catch (IOException e) {
- sink.publishWriteFailure(region, e);
+ sink.publishWriteFailure(serverName, region, e);
sink.updateWriteFailedHostList(region, serverName.getHostname());
}
return null;
@@ -1168,65 +1168,6 @@ public final class Canary implements Tool {
return executor.invokeAll(tasks);
}
- /*
- * For each column family of the region tries to get one row and outputs the latency, or the
- * failure.
- */
- private static void sniffRegion(
- final Admin admin,
- final Sink sink,
- HRegionInfo region,
- Table table) throws Exception {
- HTableDescriptor tableDesc = table.getTableDescriptor();
- byte[] startKey = null;
- Get get = null;
- Scan scan = null;
- ResultScanner rs = null;
- StopWatch stopWatch = new StopWatch();
- for (HColumnDescriptor column : tableDesc.getColumnFamilies()) {
- stopWatch.reset();
- startKey = region.getStartKey();
- // Can't do a get on empty start row so do a Scan of first element if any instead.
- if (startKey.length > 0) {
- get = new Get(startKey);
- get.setCacheBlocks(false);
- get.setFilter(new FirstKeyOnlyFilter());
- get.addFamily(column.getName());
- } else {
- scan = new Scan();
- scan.setRaw(true);
- scan.setCaching(1);
- scan.setCacheBlocks(false);
- scan.setFilter(new FirstKeyOnlyFilter());
- scan.addFamily(column.getName());
- scan.setMaxResultSize(1L);
- }
-
- try {
- if (startKey.length > 0) {
- stopWatch.start();
- table.get(get);
- stopWatch.stop();
- sink.publishReadTiming(region, column, stopWatch.getTime());
- } else {
- stopWatch.start();
- rs = table.getScanner(scan);
- stopWatch.stop();
- sink.publishReadTiming(region, column, stopWatch.getTime());
- }
- } catch (Exception e) {
- sink.publishReadFailure(region, column, e);
- } finally {
- if (rs != null) {
- rs.close();
- }
- scan = null;
- get = null;
- startKey = null;
- }
- }
- }
-
// monitor for zookeeper mode
private static class ZookeeperMonitor extends Monitor {
private List<String> hosts;
http://git-wip-us.apache.org/repos/asf/hbase/blob/78c64c36/hbase-server/src/test/java/org/apache/hadoop/hbase/tool/TestCanaryTool.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/tool/TestCanaryTool.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/tool/TestCanaryTool.java
index f910668..3ca91c9 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/tool/TestCanaryTool.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/tool/TestCanaryTool.java
@@ -1,5 +1,5 @@
/**
- *
+q *
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -23,6 +23,7 @@ import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HRegionInfo;
+import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
@@ -116,7 +117,7 @@ public class TestCanaryTool {
ToolRunner.run(testingUtility.getConfiguration(), canary, args);
assertEquals("verify no read error count", 0, canary.getReadFailures().size());
assertEquals("verify no write error count", 0, canary.getWriteFailures().size());
- verify(sink, atLeastOnce()).publishReadTiming(isA(HRegionInfo.class), isA(HColumnDescriptor.class), anyLong());
+ verify(sink, atLeastOnce()).publishReadTiming(isA(ServerName.class), isA(HRegionInfo.class), isA(HColumnDescriptor.class), anyLong());
}
//no table created, so there should be no regions
@@ -164,7 +165,7 @@ public class TestCanaryTool {
conf.setBoolean(HConstants.HBASE_CANARY_READ_RAW_SCAN_KEY, true);
ToolRunner.run(conf, canary, args);
verify(sink, atLeastOnce())
- .publishReadTiming(isA(HRegionInfo.class), isA(HColumnDescriptor.class), anyLong());
+ .publishReadTiming(isA(ServerName.class), isA(HRegionInfo.class), isA(HColumnDescriptor.class), anyLong());
assertEquals("verify no read error count", 0, canary.getReadFailures().size());
}