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 ji...@apache.org on 2015/10/08 23:17:42 UTC
[31/35] hadoop git commit: HDFS-9137. DeadLock between
DataNode#refreshVolumes and BPOfferService#registrationSucceeded. (Uma
Maheswara Rao G via yliu)
HDFS-9137. DeadLock between DataNode#refreshVolumes and BPOfferService#registrationSucceeded. (Uma Maheswara Rao G via yliu)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/35affec3
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/35affec3
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/35affec3
Branch: refs/heads/HDFS-8966
Commit: 35affec38e17e3f9c21d36be111171476072c03f
Parents: 66e2cfa
Author: yliu <yl...@apache.org>
Authored: Thu Oct 8 10:27:47 2015 +0800
Committer: yliu <yl...@apache.org>
Committed: Thu Oct 8 10:27:47 2015 +0800
----------------------------------------------------------------------
hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++
.../hadoop/hdfs/server/datanode/DataNode.java | 25 +++++++++++++++-----
2 files changed, 22 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/35affec3/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
index ee6d19d..e05a618 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
@@ -1983,6 +1983,9 @@ Release 2.8.0 - UNRELEASED
HDFS-9176. Fix TestDirectoryScanner#testThrottling often fails.
(Daniel Templeton via lei)
+ HDFS-9137. DeadLock between DataNode#refreshVolumes and
+ BPOfferService#registrationSucceeded. (Uma Maheswara Rao G via yliu)
+
Release 2.7.2 - UNRELEASED
INCOMPATIBLE CHANGES
http://git-wip-us.apache.org/repos/asf/hadoop/blob/35affec3/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 63b8847..b280067 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
@@ -497,12 +497,29 @@ public class DataNode extends ReconfigurableBase
public void reconfigurePropertyImpl(String property, String newVal)
throws ReconfigurationException {
if (property.equals(DFS_DATANODE_DATA_DIR_KEY)) {
+ IOException rootException = null;
try {
LOG.info("Reconfiguring " + property + " to " + newVal);
this.refreshVolumes(newVal);
} catch (IOException e) {
- throw new ReconfigurationException(property, newVal,
- getConf().get(property), e);
+ rootException = e;
+ } finally {
+ // Send a full block report to let NN acknowledge the volume changes.
+ try {
+ triggerBlockReport(
+ new BlockReportOptions.Factory().setIncremental(false).build());
+ } catch (IOException e) {
+ LOG.warn("Exception while sending the block report after refreshing"
+ + " volumes " + property + " to " + newVal, e);
+ if (rootException == null) {
+ rootException = e;
+ }
+ } finally {
+ if (rootException != null) {
+ throw new ReconfigurationException(property, newVal,
+ getConf().get(property), rootException);
+ }
+ }
}
} else {
throw new ReconfigurationException(
@@ -684,10 +701,6 @@ public class DataNode extends ReconfigurableBase
conf.set(DFS_DATANODE_DATA_DIR_KEY,
Joiner.on(",").join(effectiveVolumes));
dataDirs = getStorageLocations(conf);
-
- // Send a full block report to let NN acknowledge the volume changes.
- triggerBlockReport(new BlockReportOptions.Factory()
- .setIncremental(false).build());
}
}