Author: dhruba
Date: Sun Jun 20 08:31:54 2010
New Revision: 956329

URL: http://svn.apache.org/viewvc?rev=956329&view=rev
Log:
HDFS-1118. Fix socketleak on DFSClient. 
(Zheng Shao via dhruba)


Modified:
    hadoop/common/branches/branch-0.20-append/CHANGES.txt
    
hadoop/common/branches/branch-0.20-append/src/hdfs/org/apache/hadoop/hdfs/DFSClient.java

Modified: hadoop/common/branches/branch-0.20-append/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-append/CHANGES.txt?rev=956329&r1=956328&r2=956329&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-append/CHANGES.txt (original)
+++ hadoop/common/branches/branch-0.20-append/CHANGES.txt Sun Jun 20 08:31:54 
2010
@@ -65,6 +65,9 @@ Release 0.20-append - Unreleased
     HDFS-1211. Block receiver should not log "rewind" packets at INFO level.
     (Todd Lipcon via dhruba)
 
+    HDFS-1118. Fix socketleak on DFSClient. 
+    (Zheng Shao via dhruba)
+
 Release 0.20.3 - Unreleased
 
   NEW FEATURES

Modified: 
hadoop/common/branches/branch-0.20-append/src/hdfs/org/apache/hadoop/hdfs/DFSClient.java
URL: 
http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-append/src/hdfs/org/apache/hadoop/hdfs/DFSClient.java?rev=956329&r1=956328&r2=956329&view=diff
==============================================================================
--- 
hadoop/common/branches/branch-0.20-append/src/hdfs/org/apache/hadoop/hdfs/DFSClient.java
 (original)
+++ 
hadoop/common/branches/branch-0.20-append/src/hdfs/org/apache/hadoop/hdfs/DFSClient.java
 Sun Jun 20 08:31:54 2010
@@ -2926,6 +2926,7 @@ public class DFSClient implements FSCons
       // persist blocks on namenode on next flush
       persistBlocks = true;
 
+      boolean result = false;
       try {
         LOG.debug("Connecting to " + nodes[0].getName());
         InetSocketAddress target = 
NetUtils.createSocketAddr(nodes[0].getName());
@@ -2968,7 +2969,7 @@ public class DFSClient implements FSCons
         }
 
         blockStream = out;
-        return true;     // success
+        result = true;     // success
 
       } catch (IOException ie) {
 
@@ -2986,8 +2987,14 @@ public class DFSClient implements FSCons
         hasError = true;
         setLastException(ie);
         blockReplyStream = null;
-        return false;  // error
+        result = false;
+      } finally {
+        if (!result) {
+          IOUtils.closeSocket(s);
+          s = null;
+        }
       }
+      return result;
     }
   
     private LocatedBlock locateFollowingBlock(long start,


Reply via email to