Author: dhruba
Date: Wed Jun 16 20:59:10 2010
New Revision: 955380
URL: http://svn.apache.org/viewvc?rev=955380&view=rev
Log:
HDFS-561. Fix write pipeline READ_TIMEOUT.
(Todd Lipcon 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
hadoop/common/branches/branch-0.20-append/src/hdfs/org/apache/hadoop/hdfs/server/common/HdfsConstants.java
hadoop/common/branches/branch-0.20-append/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataXceiver.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=955380&r1=955379&r2=955380&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-append/CHANGES.txt (original)
+++ hadoop/common/branches/branch-0.20-append/CHANGES.txt Wed Jun 16 20:59:10
2010
@@ -35,6 +35,8 @@ Release 0.20-append - Unreleased
BUG FIXES
+ HDFS-561. Fix write pipeline READ_TIMEOUT.
+ (Todd Lipcon via dhruba)
Release 0.20.3 - Unreleased
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=955380&r1=955379&r2=955380&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
Wed Jun 16 20:59:10 2010
@@ -661,7 +661,9 @@ public class DFSClient implements FSCons
final DatanodeInfo[] datanodes = lb.getLocations();
//try each datanode location of the block
- final int timeout = 3000 * datanodes.length + socketTimeout;
+ final int timeout = (socketTimeout > 0) ? (socketTimeout +
+ HdfsConstants.READ_TIMEOUT_EXTENSION * datanodes.length) : 0;
+
boolean done = false;
for(int j = 0; !done && j < datanodes.length; j++) {
Socket sock = null;
Modified:
hadoop/common/branches/branch-0.20-append/src/hdfs/org/apache/hadoop/hdfs/server/common/HdfsConstants.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-append/src/hdfs/org/apache/hadoop/hdfs/server/common/HdfsConstants.java?rev=955380&r1=955379&r2=955380&view=diff
==============================================================================
---
hadoop/common/branches/branch-0.20-append/src/hdfs/org/apache/hadoop/hdfs/server/common/HdfsConstants.java
(original)
+++
hadoop/common/branches/branch-0.20-append/src/hdfs/org/apache/hadoop/hdfs/server/common/HdfsConstants.java
Wed Jun 16 20:59:10 2010
@@ -48,6 +48,7 @@ public interface HdfsConstants {
// Timeouts for communicating with DataNode for streaming writes/reads
public static int READ_TIMEOUT = 60 * 1000;
+ public static int READ_TIMEOUT_EXTENSION = 3 * 1000;
public static int WRITE_TIMEOUT = 8 * 60 * 1000;
public static int WRITE_TIMEOUT_EXTENSION = 5 * 1000; //for write pipeline
Modified:
hadoop/common/branches/branch-0.20-append/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataXceiver.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-append/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataXceiver.java?rev=955380&r1=955379&r2=955380&view=diff
==============================================================================
---
hadoop/common/branches/branch-0.20-append/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataXceiver.java
(original)
+++
hadoop/common/branches/branch-0.20-append/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataXceiver.java
Wed Jun 16 20:59:10 2010
@@ -276,7 +276,8 @@ class DataXceiver implements Runnable, F
mirrorTarget = NetUtils.createSocketAddr(mirrorNode);
mirrorSock = datanode.newSocket();
try {
- int timeoutValue = numTargets * datanode.socketTimeout;
+ int timeoutValue = datanode.socketTimeout +
+ (HdfsConstants.READ_TIMEOUT_EXTENSION *
numTargets);
int writeTimeout = datanode.socketWriteTimeout +
(HdfsConstants.WRITE_TIMEOUT_EXTENSION *
numTargets);
NetUtils.connect(mirrorSock, mirrorTarget, timeoutValue);