From eb9e06f8e30a6f930db478683739230f8f5ada5d 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) --- .../org/apache/hadoop/hdfs/protocol/DatanodeInfo.java | 6 ++++-- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++ .../hadoop/hdfs/server/namenode/TestMetaSave.java | 11 +++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/protocol/DatanodeInfo.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/protocol/DatanodeInfo.java index 986cd5c62d9..76a67578a6b 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/protocol/DatanodeInfo.java +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/protocol/DatanodeInfo.java @@ -369,9 +369,11 @@ public class DatanodeInfo extends DatanodeID implements Node { 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); @@ -385,11 +387,11 @@ public class DatanodeInfo extends DatanodeID implements Node { } 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/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 88a58e469bb..869950ba8d7 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -1011,6 +1011,9 @@ Release 2.7.2 - UNRELEASED HDFS-8995. Flaw in registration bookeeping can make DN die on reconnect. (Kihwal Lee via yliu) + 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/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 class TestMetaSave { 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();