From 2b9173059d5941514107150b9d0a80d9debd85c4 Mon Sep 17 00:00:00 2001 From: Kihwal Lee Date: Thu, 19 Mar 2015 12:28:36 -0500 Subject: [PATCH] HDFS-7932. Speed up the shutdown of datanode during rolling upgrade. Contributed by Kihwal Lee. (cherry picked from commit 61a4c7fc9891def0e85edf7e41d74c6b92c85fdb) --- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 2 ++ .../org/apache/hadoop/hdfs/server/datanode/DataNode.java | 7 ++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 2e5e8d19c0a..ead8912b063 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -913,6 +913,8 @@ Release 2.7.0 - UNRELEASED HDFS-7816. Unable to open webhdfs paths with "+". (wheat9 via kihwal) + HDFS-7932. Speed up the shutdown of datanode during rolling upgrade.(kihwal) + BREAKDOWN OF HDFS-7584 SUBTASKS AND RELATED JIRAS HDFS-7720. Quota by Storage Type API, tools and ClientNameNode 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 c31d2b48d97..b32a0fc895c 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 @@ -1731,8 +1731,9 @@ public class DataNode extends ReconfigurableBase // termination of receiver threads. if (!this.shutdownForUpgrade || (this.shutdownForUpgrade && (Time.monotonicNow() - timeNotified - > 2500))) { + > 1000))) { this.threadGroup.interrupt(); + break; } LOG.info("Waiting for threadgroup to exit, active threads is " + this.threadGroup.activeCount()); @@ -1743,8 +1744,8 @@ public class DataNode extends ReconfigurableBase Thread.sleep(sleepMs); } catch (InterruptedException e) {} sleepMs = sleepMs * 3 / 2; // exponential backoff - if (sleepMs > 1000) { - sleepMs = 1000; + if (sleepMs > 200) { + sleepMs = 200; } } this.threadGroup = null;