Author: rangadi
Date: Fri Feb 6 20:21:01 2009
New Revision: 741703
URL: http://svn.apache.org/viewvc?rev=741703&view=rev
Log:
HADOOP-5114. Remove timeout for accept() in DataNode. This makes accept()
fail in JDK on Windows and causes many tests to fail. (Raghu Angadi)
Modified:
hadoop/core/trunk/CHANGES.txt
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java
hadoop/core/trunk/src/test/org/apache/hadoop/hdfs/MiniDFSCluster.java
hadoop/core/trunk/src/test/org/apache/hadoop/hdfs/server/datanode/TestDiskError.java
hadoop/core/trunk/src/test/org/apache/hadoop/hdfs/server/namenode/TestOverReplicatedBlocks.java
Modified: hadoop/core/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/core/trunk/CHANGES.txt?rev=741703&r1=741702&r2=741703&view=diff
==============================================================================
--- hadoop/core/trunk/CHANGES.txt (original)
+++ hadoop/core/trunk/CHANGES.txt Fri Feb 6 20:21:01 2009
@@ -1743,6 +1743,13 @@
HADOOP-4500. Fix MultiFileSplit to get the FileSystem from the relevant
path rather than the JobClient. (Joydeep Sen Sarma via cdouglas)
+Release 0.18.4 - Unreleased
+
+ BUG FIXES
+
+ HADOOP-5114. Remove timeout for accept() in DataNode. This makes accept()
+ fail in JDK on Windows and causes many tests to fail. (Raghu Angadi)
+
Release 0.18.3 - 2009-01-27
IMPROVEMENTS
Modified:
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java
URL:
http://svn.apache.org/viewvc/hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java?rev=741703&r1=741702&r2=741703&view=diff
==============================================================================
---
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java
(original)
+++
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java
Fri Feb 6 20:21:01 2009
@@ -307,7 +307,6 @@
ServerSocketChannel.open().socket() : new ServerSocket();
Server.bind(ss, socAddr, 0);
ss.setReceiveBufferSize(DEFAULT_DATA_SOCKET_SIZE);
- ss.setSoTimeout(conf.getInt("dfs.dataXceiver.timeoutInMS", 30000)); //30s
// adjust machine name with the actual port
tmpPort = ss.getLocalPort();
selfAddr = new InetSocketAddress(ss.getInetAddress().getHostAddress(),
@@ -593,6 +592,11 @@
} catch (InterruptedException e) {}
}
}
+ // wait for dataXceiveServer to terminate
+ try {
+ this.dataXceiverServer.join();
+ } catch (InterruptedException ie) {
+ }
}
RPC.stopProxy(namenode); // stop the RPC threads
@@ -1176,12 +1180,6 @@
}
}
- // wait for dataXceiveServer to terminate
- try {
- this.dataXceiverServer.join();
- } catch (InterruptedException ie) {
- }
-
LOG.info(dnRegistration + ":Finishing DataNode in: "+data);
shutdown();
}
Modified: hadoop/core/trunk/src/test/org/apache/hadoop/hdfs/MiniDFSCluster.java
URL:
http://svn.apache.org/viewvc/hadoop/core/trunk/src/test/org/apache/hadoop/hdfs/MiniDFSCluster.java?rev=741703&r1=741702&r2=741703&view=diff
==============================================================================
--- hadoop/core/trunk/src/test/org/apache/hadoop/hdfs/MiniDFSCluster.java
(original)
+++ hadoop/core/trunk/src/test/org/apache/hadoop/hdfs/MiniDFSCluster.java Fri
Feb 6 20:21:01 2009
@@ -610,7 +610,7 @@
/*
* Shutdown a particular datanode
*/
- DataNodeProperties stopDataNode(int i) {
+ public DataNodeProperties stopDataNode(int i) {
if (i < 0 || i >= dataNodes.size()) {
return null;
}
Modified:
hadoop/core/trunk/src/test/org/apache/hadoop/hdfs/server/datanode/TestDiskError.java
URL:
http://svn.apache.org/viewvc/hadoop/core/trunk/src/test/org/apache/hadoop/hdfs/server/datanode/TestDiskError.java?rev=741703&r1=741702&r2=741703&view=diff
==============================================================================
---
hadoop/core/trunk/src/test/org/apache/hadoop/hdfs/server/datanode/TestDiskError.java
(original)
+++
hadoop/core/trunk/src/test/org/apache/hadoop/hdfs/server/datanode/TestDiskError.java
Fri Feb 6 20:21:01 2009
@@ -37,10 +37,18 @@
/** Test if a datanode can correctly handle errors during block read/write*/
public class TestDiskError extends TestCase {
public void testShutdown() throws Exception {
+ if (System.getProperty("os.name").startsWith("Windows")) {
+ /**
+ * This test depends on OS not allowing file creations on a directory
+ * that does not have write permissions for the user. Apparently it is
+ * not the case on Windows (at least under Cygwin), and possibly AIX.
+ * This is disabled on Windows.
+ */
+ return;
+ }
// bring up a cluster of 3
Configuration conf = new Configuration();
conf.setLong("dfs.block.size", 512L);
- conf.setInt("dfs.dataXceiver.timeoutInMS", 1000);
MiniDFSCluster cluster = new MiniDFSCluster(conf, 3, true, null);
cluster.waitActive();
FileSystem fs = cluster.getFileSystem();
Modified:
hadoop/core/trunk/src/test/org/apache/hadoop/hdfs/server/namenode/TestOverReplicatedBlocks.java
URL:
http://svn.apache.org/viewvc/hadoop/core/trunk/src/test/org/apache/hadoop/hdfs/server/namenode/TestOverReplicatedBlocks.java?rev=741703&r1=741702&r2=741703&view=diff
==============================================================================
---
hadoop/core/trunk/src/test/org/apache/hadoop/hdfs/server/namenode/TestOverReplicatedBlocks.java
(original)
+++
hadoop/core/trunk/src/test/org/apache/hadoop/hdfs/server/namenode/TestOverReplicatedBlocks.java
Fri Feb 6 20:21:01 2009
@@ -9,6 +9,7 @@
import org.apache.hadoop.hdfs.DFSTestUtil;
import org.apache.hadoop.hdfs.MiniDFSCluster;
import org.apache.hadoop.hdfs.TestDatanodeBlockScanner;
+import org.apache.hadoop.hdfs.MiniDFSCluster.DataNodeProperties;
import org.apache.hadoop.hdfs.protocol.Block;
import org.apache.hadoop.hdfs.protocol.DatanodeID;
@@ -35,12 +36,20 @@
// corrupt the block on datanode 0
Block block = DFSTestUtil.getFirstBlock(fs, fileName);
TestDatanodeBlockScanner.corruptReplica(block.getBlockName(), 0);
+ DataNodeProperties dnProps = cluster.stopDataNode(0);
// remove block scanner log to trigger block scanning
File scanLog = new File(System.getProperty("test.build.data"),
"dfs/data/data1/current/dncp_block_verification.log.curr");
- assertTrue(scanLog.delete());
+ //wait for one minute for deletion to succeed;
+ for(int i=0; !scanLog.delete(); i++) {
+ assertTrue("Could not delete log file in one minute", i < 60);
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException ignored) {}
+ }
+
// restart the datanode so the corrupt replica will be detected
- cluster.restartDataNode(0);
+ cluster.restartDataNode(dnProps);
DFSTestUtil.waitReplication(fs, fileName, (short)2);
final DatanodeID corruptDataNode =