HDFS-9674. The HTrace span for OpWriteBlock should record the maxWriteToDisk time. Contributed by Colin McCabe.
Change-Id: I9bf3f3bcd57f5880189ad7c160f3dd66f97d904b Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/b4a05c1f Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/b4a05c1f Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/b4a05c1f Branch: refs/heads/YARN-1011 Commit: b4a05c1fd5ae98e28cf2b15f5b068e6c2d12f2a8 Parents: 2a86735 Author: Zhe Zhang <z...@apache.org> Authored: Thu Jan 21 13:25:42 2016 -0800 Committer: Zhe Zhang <z...@apache.org> Committed: Thu Jan 21 13:25:42 2016 -0800 ---------------------------------------------------------------------- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++ .../hadoop/hdfs/server/datanode/BlockReceiver.java | 11 +++++++++++ 2 files changed, 14 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/b4a05c1f/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index da16357..0ded0c4 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -941,6 +941,9 @@ Release 2.9.0 - UNRELEASED HDFS-9542. Move BlockIdManager from FSNamesystem to BlockManager. (jing9) + HDFS-9674. The HTrace span for OpWriteBlock should record the maxWriteToDisk + time. (cmccabe via zhz) + OPTIMIZATIONS BUG FIXES http://git-wip-us.apache.org/repos/asf/hadoop/blob/b4a05c1f/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockReceiver.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockReceiver.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockReceiver.java index 8003c76..e7908a5 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockReceiver.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockReceiver.java @@ -58,6 +58,8 @@ import org.apache.hadoop.util.Daemon; import org.apache.hadoop.util.DataChecksum; import org.apache.hadoop.util.StringUtils; import org.apache.hadoop.util.Time; +import org.apache.htrace.core.Span; +import org.apache.htrace.core.Tracer; import static org.apache.hadoop.io.nativeio.NativeIO.POSIX.POSIX_FADV_DONTNEED; import static org.apache.hadoop.io.nativeio.NativeIO.POSIX.SYNC_FILE_RANGE_WRITE; @@ -136,6 +138,7 @@ class BlockReceiver implements Closeable { private long lastResponseTime = 0; private boolean isReplaceBlock = false; private DataOutputStream replyOut = null; + private long maxWriteToDiskMs = 0; private boolean pinning; private long lastSentTime; @@ -302,6 +305,11 @@ class BlockReceiver implements Closeable { */ @Override public void close() throws IOException { + Span span = Tracer.getCurrentSpan(); + if (span != null) { + span.addKVAnnotation("maxWriteToDiskMs", + Long.toString(maxWriteToDiskMs)); + } packetReceiver.close(); IOException ioe = null; @@ -697,6 +705,9 @@ class BlockReceiver implements Closeable { long begin = Time.monotonicNow(); out.write(dataBuf.array(), startByteToDisk, numBytesToDisk); long duration = Time.monotonicNow() - begin; + if (duration > maxWriteToDiskMs) { + maxWriteToDiskMs = duration; + } if (duration > datanodeSlowLogThresholdMs) { LOG.warn("Slow BlockReceiver write data to disk cost:" + duration + "ms (threshold=" + datanodeSlowLogThresholdMs + "ms)");