You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ar...@apache.org on 2018/08/10 21:02:22 UTC
hadoop git commit: HDFS-13721. NPE in DataNode due to uninitialized
DiskBalancer.
Repository: hadoop
Updated Branches:
refs/heads/branch-3.1 ba6b48e19 -> 7d1e2e1fb
HDFS-13721. NPE in DataNode due to uninitialized DiskBalancer.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/7d1e2e1f
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/7d1e2e1f
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/7d1e2e1f
Branch: refs/heads/branch-3.1
Commit: 7d1e2e1fbbe14d2f62fba3813e2db82a7fe9e61d
Parents: ba6b48e
Author: Xiao Chen <xi...@apache.org>
Authored: Fri Jul 6 20:45:27 2018 -0700
Committer: Arpit Agarwal <ar...@apache.org>
Committed: Fri Aug 10 13:53:34 2018 -0700
----------------------------------------------------------------------
.../hadoop/hdfs/server/datanode/DataNode.java | 19 +++++++++++++------
.../server/diskbalancer/TestDiskBalancer.java | 5 +++++
2 files changed, 18 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7d1e2e1f/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java
index 956dd76..1e9c57a 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java
@@ -3135,7 +3135,7 @@ public class DataNode extends ReconfigurableBase
@Override // DataNodeMXBean
public String getDiskBalancerStatus() {
try {
- return this.diskBalancer.queryWorkStatus().toJsonString();
+ return getDiskBalancer().queryWorkStatus().toJsonString();
} catch (IOException ex) {
LOG.debug("Reading diskbalancer Status failed. ex:{}", ex);
return "";
@@ -3513,7 +3513,7 @@ public class DataNode extends ReconfigurableBase
DiskBalancerException.Result.DATANODE_STATUS_NOT_REGULAR);
}
- this.diskBalancer.submitPlan(planID, planVersion, planFile, planData,
+ getDiskBalancer().submitPlan(planID, planVersion, planFile, planData,
skipDateCheck);
}
@@ -3525,7 +3525,7 @@ public class DataNode extends ReconfigurableBase
public void cancelDiskBalancePlan(String planID) throws
IOException {
checkSuperuserPrivilege();
- this.diskBalancer.cancelPlan(planID);
+ getDiskBalancer().cancelPlan(planID);
}
/**
@@ -3536,7 +3536,7 @@ public class DataNode extends ReconfigurableBase
@Override
public DiskBalancerWorkStatus queryDiskBalancerPlan() throws IOException {
checkSuperuserPrivilege();
- return this.diskBalancer.queryWorkStatus();
+ return getDiskBalancer().queryWorkStatus();
}
/**
@@ -3553,9 +3553,9 @@ public class DataNode extends ReconfigurableBase
Preconditions.checkNotNull(key);
switch (key) {
case DiskBalancerConstants.DISKBALANCER_VOLUME_NAME:
- return this.diskBalancer.getVolumeNames();
+ return getDiskBalancer().getVolumeNames();
case DiskBalancerConstants.DISKBALANCER_BANDWIDTH :
- return Long.toString(this.diskBalancer.getBandwidth());
+ return Long.toString(getDiskBalancer().getBandwidth());
default:
LOG.error("Disk Balancer - Unknown key in get balancer setting. Key: {}",
key);
@@ -3609,4 +3609,11 @@ public class DataNode extends ReconfigurableBase
}
return volumeInfoList;
}
+
+ private DiskBalancer getDiskBalancer() throws IOException {
+ if (this.diskBalancer == null) {
+ throw new IOException("DiskBalancer is not initialized");
+ }
+ return this.diskBalancer;
+ }
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7d1e2e1f/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/diskbalancer/TestDiskBalancer.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/diskbalancer/TestDiskBalancer.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/diskbalancer/TestDiskBalancer.java
index 55cc57e..e789694 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/diskbalancer/TestDiskBalancer.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/diskbalancer/TestDiskBalancer.java
@@ -109,6 +109,11 @@ public class TestDiskBalancer {
.getFsVolumeReferences()) {
assertEquals(ref.size(), dbDnNode.getVolumeCount());
}
+
+ // Shutdown the DN first, to verify that calling diskbalancer APIs on
+ // uninitialized DN doesn't NPE
+ dnNode.shutdown();
+ assertEquals("", dnNode.getDiskBalancerStatus());
} finally {
cluster.shutdown();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org