From 41eca368553d07ae93f7ef0f5bc268ed917079f1 Mon Sep 17 00:00:00 2001 From: Sanford Ryza Date: Fri, 13 Jun 2014 20:45:24 +0000 Subject: [PATCH] HADOOP-10688. Expose thread-level FileSystem StatisticsData (Sandy Ryza) git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1602516 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop-common/CHANGES.txt | 2 ++ .../java/org/apache/hadoop/fs/FileSystem.java | 34 +++++++++++++++---- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 5dd19dd276..cf4df0bcff 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -425,6 +425,8 @@ Release 2.5.0 - UNRELEASED HADOOP-10691. Improve the readability of 'hadoop fs -help'. (Lei Xu via wang) + HADOOP-10688. Expose thread-level FileSystem StatisticsData (Sandy Ryza) + OPTIMIZATIONS BUG FIXES diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileSystem.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileSystem.java index 998db2faf6..deaceb3342 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileSystem.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileSystem.java @@ -2804,7 +2804,7 @@ public static final class Statistics { * be perceived as atomic with respect to other threads, which is all we * need. */ - private static class StatisticsData { + public static class StatisticsData { volatile long bytesRead; volatile long bytesWritten; volatile int readOps; @@ -2849,6 +2849,26 @@ public String toString() { + readOps + " read ops, " + largeReadOps + " large read ops, " + writeOps + " write ops"; } + + public long getBytesRead() { + return bytesRead; + } + + public long getBytesWritten() { + return bytesWritten; + } + + public int getReadOps() { + return readOps; + } + + public int getLargeReadOps() { + return largeReadOps; + } + + public int getWriteOps() { + return writeOps; + } } private interface StatisticsAggregator { @@ -2907,7 +2927,7 @@ public Void aggregate() { /** * Get or create the thread-local data associated with the current thread. */ - private StatisticsData getThreadData() { + public StatisticsData getThreadStatistics() { StatisticsData data = threadData.get(); if (data == null) { data = new StatisticsData( @@ -2928,7 +2948,7 @@ private StatisticsData getThreadData() { * @param newBytes the additional bytes read */ public void incrementBytesRead(long newBytes) { - getThreadData().bytesRead += newBytes; + getThreadStatistics().bytesRead += newBytes; } /** @@ -2936,7 +2956,7 @@ public void incrementBytesRead(long newBytes) { * @param newBytes the additional bytes written */ public void incrementBytesWritten(long newBytes) { - getThreadData().bytesWritten += newBytes; + getThreadStatistics().bytesWritten += newBytes; } /** @@ -2944,7 +2964,7 @@ public void incrementBytesWritten(long newBytes) { * @param count number of read operations */ public void incrementReadOps(int count) { - getThreadData().readOps += count; + getThreadStatistics().readOps += count; } /** @@ -2952,7 +2972,7 @@ public void incrementReadOps(int count) { * @param count number of large read operations */ public void incrementLargeReadOps(int count) { - getThreadData().largeReadOps += count; + getThreadStatistics().largeReadOps += count; } /** @@ -2960,7 +2980,7 @@ public void incrementLargeReadOps(int count) { * @param count number of write operations */ public void incrementWriteOps(int count) { - getThreadData().writeOps += count; + getThreadStatistics().writeOps += count; } /**