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 sz...@apache.org on 2010/09/10 04:04:17 UTC
svn commit: r995639 - in /hadoop/hdfs/trunk: CHANGES.txt
src/java/org/apache/hadoop/hdfs/DFSInputStream.java
Author: szetszwo
Date: Fri Sep 10 02:04:17 2010
New Revision: 995639
URL: http://svn.apache.org/viewvc?rev=995639&view=rev
Log:
HDFS-1310. The ClientDatanodeProtocol proxy should be stopped in DFSInputStream.readBlockLength(..). Contributed by sam rash
Modified:
hadoop/hdfs/trunk/CHANGES.txt
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/DFSInputStream.java
Modified: hadoop/hdfs/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/CHANGES.txt?rev=995639&r1=995638&r2=995639&view=diff
==============================================================================
--- hadoop/hdfs/trunk/CHANGES.txt (original)
+++ hadoop/hdfs/trunk/CHANGES.txt Fri Sep 10 02:04:17 2010
@@ -249,6 +249,9 @@ Trunk (unreleased changes)
HDFS-829. hdfsJniHelper.c: #include <error.h> is not portable.
(Allen Wittenauer via jghoman)
+ HDFS-1310. The ClientDatanodeProtocol proxy should be stopped in
+ DFSInputStream.readBlockLength(..). (sam rash via szetszwo)
+
Release 0.21.0 - Unreleased
INCOMPATIBLE CHANGES
Modified: hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/DFSInputStream.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/DFSInputStream.java?rev=995639&r1=995638&r2=995639&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/DFSInputStream.java (original)
+++ hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/DFSInputStream.java Fri Sep 10 02:04:17 2010
@@ -39,6 +39,7 @@ import org.apache.hadoop.hdfs.security.t
import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;
import org.apache.hadoop.hdfs.server.datanode.ReplicaNotFoundException;
import org.apache.hadoop.io.IOUtils;
+import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ipc.RemoteException;
import org.apache.hadoop.net.NetUtils;
import org.apache.hadoop.security.token.Token;
@@ -146,10 +147,14 @@ public class DFSInputStream extends FSIn
int replicaNotFoundCount = locatedblock.getLocations().length;
for(DatanodeInfo datanode : locatedblock.getLocations()) {
+ ClientDatanodeProtocol cdp = null;
+
try {
- final ClientDatanodeProtocol cdp = DFSClient.createClientDatanodeProtocolProxy(
- datanode, dfsClient.conf, dfsClient.socketTimeout, locatedblock);
+ cdp = DFSClient.createClientDatanodeProtocolProxy(
+ datanode, dfsClient.conf, dfsClient.socketTimeout, locatedblock);
+
final long n = cdp.getReplicaVisibleLength(locatedblock.getBlock());
+
if (n >= 0) {
return n;
}
@@ -166,6 +171,10 @@ public class DFSInputStream extends FSIn
DFSClient.LOG.debug("Failed to getReplicaVisibleLength from datanode "
+ datanode + " for block " + locatedblock.getBlock(), ioe);
}
+ } finally {
+ if (cdp != null) {
+ RPC.stopProxy(cdp);
+ }
}
}