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 dh...@apache.org on 2010/06/20 10:28:25 UTC
svn commit: r956328 - in /hadoop/hdfs/trunk: CHANGES.txt
src/java/org/apache/hadoop/hdfs/DFSOutputStream.java
Author: dhruba
Date: Sun Jun 20 08:28:25 2010
New Revision: 956328
URL: http://svn.apache.org/viewvc?rev=956328&view=rev
Log:
HDFS-1118. Fix socketleak on DFSClient.
(Zheng Shao via dhruba)
Modified:
hadoop/hdfs/trunk/CHANGES.txt
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/DFSOutputStream.java
Modified: hadoop/hdfs/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/CHANGES.txt?rev=956328&r1=956327&r2=956328&view=diff
==============================================================================
--- hadoop/hdfs/trunk/CHANGES.txt (original)
+++ hadoop/hdfs/trunk/CHANGES.txt Sun Jun 20 08:28:25 2010
@@ -87,7 +87,9 @@ Trunk (unreleased changes)
HDFS-1080. SecondaryNameNode image transfer should use the defined http
address rather than local ip address. (jghoman)
- HDSF-1198. Resolving cross-realm principals. (Jitendra Pandey via jghoman)
+ HDFS-1198. Resolving cross-realm principals. (Jitendra Pandey via jghoman)
+
+ HDFS-1118. Fix socketleak on DFSClient. (Zheng Shao via dhruba)
Release 0.21.0 - Unreleased
Modified: hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/DFSOutputStream.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/DFSOutputStream.java?rev=956328&r1=956327&r2=956328&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/DFSOutputStream.java (original)
+++ hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/DFSOutputStream.java Sun Jun 20 08:28:25 2010
@@ -60,6 +60,7 @@ import org.apache.hadoop.hdfs.server.nam
import org.apache.hadoop.hdfs.server.namenode.SafeModeException;
import org.apache.hadoop.io.EnumSetWritable;
import org.apache.hadoop.io.Text;
+import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.ipc.RemoteException;
import org.apache.hadoop.net.NetUtils;
import org.apache.hadoop.security.AccessControlException;
@@ -853,6 +854,7 @@ class DFSOutputStream extends FSOutputSu
// persist blocks on namenode on next flush
persistBlocks.set(true);
+ boolean result = false;
try {
DFSClient.LOG.debug("Connecting to " + nodes[0].getName());
InetSocketAddress target = NetUtils.createSocketAddr(nodes[0].getName());
@@ -895,7 +897,7 @@ class DFSOutputStream extends FSOutputSu
}
blockStream = out;
- return true; // success
+ result = true; // success
} catch (IOException ie) {
@@ -915,8 +917,14 @@ class DFSOutputStream extends FSOutputSu
hasError = true;
setLastException(ie);
blockReplyStream = null;
- return false; // error
+ result = false; // error
+ } finally {
+ if (!result) {
+ IOUtils.closeSocket(s);
+ s = null;
+ }
}
+ return result;
}
private LocatedBlock locateFollowingBlock(long start,