Переглянути джерело

MAPREDUCE-3519. Fixed a deadlock in NodeManager LocalDirectories's handling service. Contributed by Ravi Gummadi.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1212680 13f79535-47bb-0310-9956-ffa450edef68
Vinod Kumar Vavilapalli 13 роки тому
батько
коміт
b0d3781b64

+ 3 - 0
hadoop-mapreduce-project/CHANGES.txt

@@ -258,6 +258,9 @@ Release 0.23.1 - Unreleased
     MAPREDUCE-3513. Capacity Scheduler web UI has a spelling mistake for Memory.
     (chackaravarthy via mahadev)
 
+    MAPREDUCE-3519. Fixed a deadlock in NodeManager LocalDirectories's handling
+    service. (Ravi Gummadi via vinodkv)
+
 Release 0.23.0 - 2011-11-01 
 
   INCOMPATIBLE CHANGES

+ 7 - 29
hadoop-mapreduce-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/LocalDirsHandlerService.java

@@ -249,49 +249,27 @@ public class LocalDirsHandlerService extends AbstractService {
     conf.setStrings(YarnConfiguration.NM_LOCAL_DIRS,
                     localDirs.toArray(new String[localDirs.size()]));
     List<String> logDirs = getLogDirs();
-    synchronized(conf) {
-      conf.setStrings(YarnConfiguration.NM_LOG_DIRS,
+    conf.setStrings(YarnConfiguration.NM_LOG_DIRS,
                       logDirs.toArray(new String[logDirs.size()]));
-    }
   }
 
   public Path getLocalPathForWrite(String pathStr) throws IOException {
-    Configuration conf = getConfig();
-    Path path = null;
-    synchronized (conf) {
-      path = localDirsAllocator.getLocalPathForWrite(pathStr, conf);
-    }
-    return path;
+    return localDirsAllocator.getLocalPathForWrite(pathStr, getConfig());
   }
 
   public Path getLocalPathForWrite(String pathStr, long size,
       boolean checkWrite) throws IOException {
-    Configuration conf = getConfig();
-    Path path = null;
-    synchronized (conf) {
-      path = localDirsAllocator.getLocalPathForWrite(pathStr, size, conf,
-                                                     checkWrite);
-    }
-    return path;
+    return localDirsAllocator.getLocalPathForWrite(pathStr, size, getConfig(),
+                                                   checkWrite);
   }
 
   public Path getLogPathForWrite(String pathStr, boolean checkWrite)
       throws IOException {
-    Configuration conf = getConfig();
-    Path path = null;
-    synchronized (conf) {
-      path = logDirsAllocator.getLocalPathForWrite(pathStr,
-        LocalDirAllocator.SIZE_UNKNOWN, conf, checkWrite);
-    }
-    return path;
+    return logDirsAllocator.getLocalPathForWrite(pathStr,
+        LocalDirAllocator.SIZE_UNKNOWN, getConfig(), checkWrite);
   }
 
   public Path getLogPathToRead(String pathStr) throws IOException {
-    Configuration conf = getConfig();
-    Path path = null;
-    synchronized (conf) {
-      path = logDirsAllocator.getLocalPathToRead(pathStr, conf);
-    }
-    return path;
+    return logDirsAllocator.getLocalPathToRead(pathStr, getConfig());
   }
 }