You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-commits@hadoop.apache.org by ki...@apache.org on 2013/08/27 23:04:25 UTC
svn commit: r1517989 - in
/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs: CHANGES.txt
src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
Author: kihwal
Date: Tue Aug 27 21:04:24 2013
New Revision: 1517989
URL: http://svn.apache.org/r1517989
Log:
HDFS-5132. Deadlock in NameNode between SafeModeMonitor#run and DatanodeManager#handleHeartbeat. Contributed by Kihwal Lee.
Modified:
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1517989&r1=1517988&r2=1517989&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Tue Aug 27 21:04:24 2013
@@ -395,6 +395,9 @@ Release 2.1.1-beta - UNRELEASED
HDFS-5124. DelegationTokenSecretManager#retrievePassword can cause deadlock
in NameNode. (Daryn Sharp via jing9)
+ HDFS-5132. Deadlock in NameNode between SafeModeMonitor#run and
+ DatanodeManager#handleHeartbeat. (kihwal)
+
Release 2.1.0-beta - 2013-08-22
INCOMPATIBLE CHANGES
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java?rev=1517989&r1=1517988&r2=1517989&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java Tue Aug 27 21:04:24 2013
@@ -4798,7 +4798,21 @@ public class FSNamesystem implements Nam
*/
@Override
public void run() {
- while (fsRunning && (safeMode != null && !safeMode.canLeave())) {
+ while (fsRunning) {
+ writeLock();
+ try {
+ if (safeMode == null) { // Not in safe mode.
+ break;
+ }
+ if (safeMode.canLeave()) {
+ // Leave safe mode.
+ safeMode.leave();
+ break;
+ }
+ } finally {
+ writeUnlock();
+ }
+
try {
Thread.sleep(recheckInterval);
} catch (InterruptedException ie) {
@@ -4807,9 +4821,6 @@ public class FSNamesystem implements Nam
}
if (!fsRunning) {
LOG.info("NameNode is being shutdown, exit SafeModeMonitor thread");
- } else {
- // leave safe mode and stop the monitor
- leaveSafeMode();
}
smmthread = null;
}