Browse Source

HADOOP-14902. LoadGenerator#genFile write close timing is incorrectly calculated. Contributed by Hanisha Koneru

(cherry picked from commit 6f789fe05766a61b12ca10df3f26ee354eac84aa)

Conflicts:
	hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/loadGenerator/LoadGenerator.java
Jason Lowe 7 years ago
parent
commit
ffe42e62c9

+ 6 - 0
hadoop-common-project/hadoop-common/CHANGES.txt

@@ -20,6 +20,12 @@ Release 2.7.5 - UNRELEASED
     HADOOP-14702. Fix formatting issue and regression caused by conversion from
     APT to Markdown. (Doris Gu via iwasakims)
 
+    HADOOP-14881. LoadGenerator should use Time.monotonicNow() to measure
+    durations. (Bharat Viswanadham via jlowe)
+
+    HADOOP-14902. LoadGenerator#genFile write close timing is incorrectly
+    calculated. (Hanisha Koneru via jlowe)
+
 Release 2.7.4 - 2017-08-04
 
   INCOMPATIBLE CHANGES

+ 8 - 3
hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/loadGenerator/LoadGenerator.java

@@ -322,6 +322,7 @@ public class LoadGenerator extends Configured implements Tool {
     private void genFile(Path file, long fileSize) throws IOException {
       long startTimestamp = Time.monotonicNow();
       FSDataOutputStream out = null;
+      boolean isOutClosed = false;
       try {
         out = fc.create(file,
             EnumSet.of(CreateFlag.CREATE, CreateFlag.OVERWRITE),
@@ -337,11 +338,15 @@ public class LoadGenerator extends Configured implements Tool {
           i -= s;
         }
 
-        startTimestamp = Time.monotonicNow();
-        executionTime[WRITE_CLOSE] += (Time.monotonicNow() - startTimestamp);
+        startTime = Time.monotonicNow();
+        out.close();
+        executionTime[WRITE_CLOSE] += (Time.monotonicNow() - startTime);
         numOfOps[WRITE_CLOSE]++;
+        isOutClosed = true;
       } finally {
-        IOUtils.cleanup(LOG, out);
+        if (!isOutClosed && out != null) {
+          out.close();
+        }
       }
     }
   }