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 bo...@apache.org on 2011/04/05 00:25:47 UTC

svn commit: r1088807 - in /hadoop/common/branches/branch-0.20-security: ./ src/core/org/apache/hadoop/ipc/ src/hdfs/org/apache/hadoop/hdfs/server/datanode/

Author: boryas
Date: Mon Apr  4 22:25:46 2011
New Revision: 1088807

URL: http://svn.apache.org/viewvc?rev=1088807&view=rev
Log:
HDFS-1692. In secure mode, Datanode process doesn't exit when disks fail.

Modified:
    hadoop/common/branches/branch-0.20-security/CHANGES.txt
    hadoop/common/branches/branch-0.20-security/src/core/org/apache/hadoop/ipc/Server.java
    hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java
    hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataXceiverServer.java
    hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/server/datanode/FSDataset.java

Modified: hadoop/common/branches/branch-0.20-security/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security/CHANGES.txt?rev=1088807&r1=1088806&r2=1088807&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security/CHANGES.txt (original)
+++ hadoop/common/branches/branch-0.20-security/CHANGES.txt Mon Apr  4 22:25:46 2011
@@ -36,6 +36,10 @@ Release 0.20.204.0 - unreleased
 
     HDFS-1189. Quota counts missed between clear quota and set quota.
     (John George via szetszwo)
+
+    HDFS-1692. In secure mode, Datanode process doesn't exit when disks 
+    fail. (bharathm via boryas)
+
   
   IMPROVEMENTS
 

Modified: hadoop/common/branches/branch-0.20-security/src/core/org/apache/hadoop/ipc/Server.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security/src/core/org/apache/hadoop/ipc/Server.java?rev=1088807&r1=1088806&r2=1088807&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security/src/core/org/apache/hadoop/ipc/Server.java (original)
+++ hadoop/common/branches/branch-0.20-security/src/core/org/apache/hadoop/ipc/Server.java Mon Apr  4 22:25:46 2011
@@ -53,6 +53,7 @@ import java.util.concurrent.ConcurrentHa
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
 
 import javax.security.sasl.Sasl;
 import javax.security.sasl.SaslException;
@@ -567,6 +568,12 @@ public abstract class Server {
         }
       }
       readPool.shutdown();
+      try {
+          readPool.awaitTermination(10, TimeUnit.SECONDS);
+      } catch (InterruptedException e) {
+       LOG.info("Exception occured in doStop:" + e.getMessage());
+      }
+      readPool.shutdownNow();
     }
 
     // The method that will return the next reader to work with

Modified: hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java?rev=1088807&r1=1088806&r2=1088807&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java (original)
+++ hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java Mon Apr  4 22:25:46 2011
@@ -1566,7 +1566,14 @@ public class DataNode extends Configured
     } catch (Throwable e) {
       LOG.error(StringUtils.stringifyException(e));
       System.exit(-1);
-    }   
+    } finally {
+      // We need to add System.exit here because either shutdown was called or
+      // some disk related conditions like volumes tolerated or volumes required
+      // condition was not met. Also, In secure mode, control will go to Jsvc and
+      // the process hangs without System.exit.
+      LOG.info("Exiting Datanode");
+      System.exit(0);
+    }
   }
   
   public static void main(String args[]) {

Modified: hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataXceiverServer.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataXceiverServer.java?rev=1088807&r1=1088806&r2=1088807&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataXceiverServer.java (original)
+++ hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataXceiverServer.java Mon Apr  4 22:25:46 2011
@@ -21,6 +21,7 @@ import java.io.IOException;
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.net.SocketTimeoutException;
+import java.nio.channels.AsynchronousCloseException;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -133,9 +134,13 @@ class DataXceiverServer implements Runna
             new DataXceiver(s, datanode, this)).start();
       } catch (SocketTimeoutException ignored) {
         // wake up to see if should continue to run
+      } catch (AsynchronousCloseException ace) {
+          LOG.warn(datanode.dnRegistration + ":DataXceiveServer:"
+                  + StringUtils.stringifyException(ace));
+          datanode.shouldRun = false;
       } catch (IOException ie) {
-        LOG.warn(datanode.dnRegistration + ":DataXceiveServer: " 
-                                + StringUtils.stringifyException(ie));
+        LOG.warn(datanode.dnRegistration + ":DataXceiveServer: IOException due to:"
+                                 + StringUtils.stringifyException(ie));
       } catch (Throwable te) {
         LOG.error(datanode.dnRegistration + ":DataXceiveServer: Exiting due to:" 
                                  + StringUtils.stringifyException(te));
@@ -145,9 +150,10 @@ class DataXceiverServer implements Runna
     try {
       ss.close();
     } catch (IOException ie) {
-      LOG.warn(datanode.dnRegistration + ":DataXceiveServer: " 
-                              + StringUtils.stringifyException(ie));
+      LOG.warn(datanode.dnRegistration + ":DataXceiveServer: Close exception due to: "
+                               + StringUtils.stringifyException(ie));
     }
+    LOG.info("Exiting DataXceiveServer");
   }
   
   void kill() {

Modified: hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/server/datanode/FSDataset.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/server/datanode/FSDataset.java?rev=1088807&r1=1088806&r2=1088807&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/server/datanode/FSDataset.java (original)
+++ hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/server/datanode/FSDataset.java Mon Apr  4 22:25:46 2011
@@ -591,6 +591,7 @@ public class FSDataset implements FSCons
             removed_vols = new ArrayList<FSVolume>(1);
           }
           removed_vols.add(volumes[idx]);
+          volumes[idx].dfsUsage.shutdown(); //Shutdown the running DU thread
           volumes[idx] = null; //remove the volume
         }
       }