From c5a74c5c37a1208b6b0077c723efc8f4c896711a Mon Sep 17 00:00:00 2001 From: Akira Ajisaka Date: Wed, 9 Sep 2015 17:20:46 +0900 Subject: [PATCH] HDFS-9033. dfsadmin -metasave prints "NaN" for cache used%. Contributed by Brahma Reddy Battula. (cherry picked from commit 0113e4528deda7563b62a29745fbf209ab31b81a) (cherry picked from commit eb9e06f8e30a6f930db478683739230f8f5ada5d) --- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++ .../org/apache/hadoop/hdfs/protocol/DatanodeInfo.java | 6 ++++-- .../hadoop/hdfs/server/namenode/TestMetaSave.java | 11 +++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 06b87ec651c..e1785d28f62 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -44,6 +44,9 @@ Release 2.7.2 - UNRELEASED HDFS-8384. Allow NN to startup if there are files having a lease but are not under construction. (jing9) + HDFS-9033. dfsadmin -metasave prints "NaN" for cache used%. + (Brahma Reddy Battula via aajisaka) + Release 2.7.1 - 2015-07-06 INCOMPATIBLE CHANGES diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/DatanodeInfo.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/DatanodeInfo.java index 1fd001899eb..a40143ce79e 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/DatanodeInfo.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocol/DatanodeInfo.java @@ -370,9 +370,11 @@ public String dumpDatanode() { long c = getCapacity(); long r = getRemaining(); long u = getDfsUsed(); + float usedPercent = getDfsUsedPercent(); long cc = getCacheCapacity(); long cr = getCacheRemaining(); long cu = getCacheUsed(); + float cacheUsedPercent = getCacheUsedPercent(); buffer.append(getName()); if (!NetworkTopology.DEFAULT_RACK.equals(location)) { buffer.append(" "+location); @@ -386,11 +388,11 @@ public String dumpDatanode() { } buffer.append(" " + c + "(" + StringUtils.byteDesc(c)+")"); buffer.append(" " + u + "(" + StringUtils.byteDesc(u)+")"); - buffer.append(" " + percent2String(u/(double)c)); + buffer.append(" " + percent2String(usedPercent)); buffer.append(" " + r + "(" + StringUtils.byteDesc(r)+")"); buffer.append(" " + cc + "(" + StringUtils.byteDesc(cc)+")"); buffer.append(" " + cu + "(" + StringUtils.byteDesc(cu)+")"); - buffer.append(" " + percent2String(cu/(double)cc)); + buffer.append(" " + percent2String(cacheUsedPercent)); buffer.append(" " + cr + "(" + StringUtils.byteDesc(cr)+")"); buffer.append(" " + new Date(lastUpdate)); return buffer.toString(); diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestMetaSave.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestMetaSave.java index 899cf4103b2..786f83f3fe8 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestMetaSave.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestMetaSave.java @@ -17,6 +17,7 @@ */ package org.apache.hadoop.hdfs.server.namenode; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -158,6 +159,16 @@ public void testMetasaveAfterDelete() assertTrue(line.equals("Mis-replicated blocks that have been postponed:")); line = reader.readLine(); assertTrue(line.equals("Metasave: Blocks being replicated: 0")); + line = reader.readLine(); + assertTrue(line.equals("Metasave: Blocks 2 waiting deletion from 1 datanodes.")); + //skip 2 lines to reach HDFS-9033 scenario. + line = reader.readLine(); + line = reader.readLine(); + line = reader.readLine(); + assertTrue(line.equals("Metasave: Number of datanodes: 2")); + line = reader.readLine(); + assertFalse(line.contains("NaN")); + } finally { if (reader != null) reader.close();