Browse Source

HADOOP-1885. Fix race condition in MiniDFSCluster shutdown. Contributed by Chris Douglas

git-svn-id: https://svn.apache.org/repos/asf/lucene/hadoop/trunk@575114 13f79535-47bb-0310-9956-ffa450edef68
Nigel Daley 18 years ago
parent
commit
173b3838c2
2 changed files with 7 additions and 4 deletions
  1. 3 0
      CHANGES.txt
  2. 4 4
      src/java/org/apache/hadoop/dfs/DataNode.java

+ 3 - 0
CHANGES.txt

@@ -125,6 +125,9 @@ Trunk (unreleased changes)
     HADOOP-1840. Fix race condition which leads to task's diagnostic
     HADOOP-1840. Fix race condition which leads to task's diagnostic
     messages getting lost. (acmurthy) 
     messages getting lost. (acmurthy) 
 
 
+    HADOOP-1885. Fix race condition in MiniDFSCluster shutdown.
+    (Chris Douglas via nigel)
+
   IMPROVEMENTS
   IMPROVEMENTS
 
 
     HADOOP-1266. Remove dependency of package org.apache.hadoop.net on 
     HADOOP-1266. Remove dependency of package org.apache.hadoop.net on 

+ 4 - 4
src/java/org/apache/hadoop/dfs/DataNode.java

@@ -119,7 +119,7 @@ public class DataNode implements FSConstants, Runnable {
   private DataNodeMetrics myMetrics;
   private DataNodeMetrics myMetrics;
   private static InetSocketAddress nameNodeAddr;
   private static InetSocketAddress nameNodeAddr;
   private static DataNode datanodeObject = null;
   private static DataNode datanodeObject = null;
-  private static Thread dataNodeThread = null;
+  private Thread dataNodeThread = null;
   String machineName;
   String machineName;
   int defaultBytesPerChecksum = 512;
   int defaultBytesPerChecksum = 512;
   private static class DataNodeMetrics implements Updater {
   private static class DataNodeMetrics implements Updater {
@@ -1334,10 +1334,10 @@ public class DataNode implements FSConstants, Runnable {
     String[] dataDirs = conf.getStrings("dfs.data.dir");
     String[] dataDirs = conf.getStrings("dfs.data.dir");
     DataNode dn = makeInstance(dataDirs, conf);
     DataNode dn = makeInstance(dataDirs, conf);
     if (dn != null) {
     if (dn != null) {
-      dataNodeThread = new Thread(dn, "DataNode: [" +
+      dn.dataNodeThread = new Thread(dn, "DataNode: [" +
                                   StringUtils.arrayToString(dataDirs) + "]");
                                   StringUtils.arrayToString(dataDirs) + "]");
-      dataNodeThread.setDaemon(true); // needed for JUnit testing
-      dataNodeThread.start();
+      dn.dataNodeThread.setDaemon(true); // needed for JUnit testing
+      dn.dataNodeThread.start();
     }
     }
     return dn;
     return dn;
   }
   }