You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-commits@hadoop.apache.org by dh...@apache.org on 2010/07/06 08:19:04 UTC
svn commit: r960802 - in /hadoop/mapreduce/trunk: CHANGES.txt
src/contrib/raid/src/java/org/apache/hadoop/hdfs/DistributedRaidFileSystem.java
src/contrib/raid/src/test/org/apache/hadoop/hdfs/TestRaidDfs.java
Author: dhruba
Date: Tue Jul 6 06:19:04 2010
New Revision: 960802
URL: http://svn.apache.org/viewvc?rev=960802&view=rev
Log:
MAPREDUCE-1894. Fixed a bug in DistributedRaidFileSystem.readFully()
that was causing it to loop infinitely. (Ramkumar Vadali via dhruba)
Modified:
hadoop/mapreduce/trunk/CHANGES.txt
hadoop/mapreduce/trunk/src/contrib/raid/src/java/org/apache/hadoop/hdfs/DistributedRaidFileSystem.java
hadoop/mapreduce/trunk/src/contrib/raid/src/test/org/apache/hadoop/hdfs/TestRaidDfs.java
Modified: hadoop/mapreduce/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/trunk/CHANGES.txt?rev=960802&r1=960801&r2=960802&view=diff
==============================================================================
--- hadoop/mapreduce/trunk/CHANGES.txt (original)
+++ hadoop/mapreduce/trunk/CHANGES.txt Tue Jul 6 06:19:04 2010
@@ -143,6 +143,9 @@ Trunk (unreleased changes)
MAPREDUCE-577. Fixes duplicate records in StreamXmlRecordReader.
(Ravi Gummadi via amareshwari)
+ MAPREDUCE-1894. Fixed a bug in DistributedRaidFileSystem.readFully()
+ that was causing it to loop infinitely. (Ramkumar Vadali via dhruba)
+
Release 0.21.0 - Unreleased
INCOMPATIBLE CHANGES
Modified: hadoop/mapreduce/trunk/src/contrib/raid/src/java/org/apache/hadoop/hdfs/DistributedRaidFileSystem.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/trunk/src/contrib/raid/src/java/org/apache/hadoop/hdfs/DistributedRaidFileSystem.java?rev=960802&r1=960801&r2=960802&view=diff
==============================================================================
--- hadoop/mapreduce/trunk/src/contrib/raid/src/java/org/apache/hadoop/hdfs/DistributedRaidFileSystem.java (original)
+++ hadoop/mapreduce/trunk/src/contrib/raid/src/java/org/apache/hadoop/hdfs/DistributedRaidFileSystem.java Tue Jul 6 06:19:04 2010
@@ -297,6 +297,7 @@ public class DistributedRaidFileSystem e
try {
underLyingStream.readFully(pos, b, offset, length);
nextLocation = 0;
+ return;
} catch (BlockMissingException e) {
setAlternateLocations(e, post);
} catch (ChecksumException e) {
@@ -312,6 +313,7 @@ public class DistributedRaidFileSystem e
try {
underLyingStream.readFully(pos, b);
nextLocation = 0;
+ return;
} catch (BlockMissingException e) {
setAlternateLocations(e, post);
} catch (ChecksumException e) {
Modified: hadoop/mapreduce/trunk/src/contrib/raid/src/test/org/apache/hadoop/hdfs/TestRaidDfs.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/trunk/src/contrib/raid/src/test/org/apache/hadoop/hdfs/TestRaidDfs.java?rev=960802&r1=960801&r2=960802&view=diff
==============================================================================
--- hadoop/mapreduce/trunk/src/contrib/raid/src/test/org/apache/hadoop/hdfs/TestRaidDfs.java (original)
+++ hadoop/mapreduce/trunk/src/contrib/raid/src/test/org/apache/hadoop/hdfs/TestRaidDfs.java Tue Jul 6 06:19:04 2010
@@ -200,6 +200,40 @@ public class TestRaidDfs extends TestCas
}
LOG.info("Test testPathFilter completed.");
}
+
+ /**
+ * Test DistributedRaidFileSystem.readFully()
+ */
+ public void testReadFully() throws Exception {
+ mySetup();
+
+ try {
+ Path file = new Path("/user/raid/raidtest/file1");
+ createOldFile(fileSys, file, 1, 7, 8192L);
+
+ // filter all filesystem calls from client
+ Configuration clientConf = new Configuration(conf);
+ clientConf.set("fs.hdfs.impl",
+ "org.apache.hadoop.hdfs.DistributedRaidFileSystem");
+ clientConf.set("fs.raid.underlyingfs.impl",
+ "org.apache.hadoop.hdfs.DistributedFileSystem");
+ URI dfsUri = dfs.getFileSystem().getUri();
+ FileSystem.closeAll();
+ FileSystem raidfs = FileSystem.get(dfsUri, clientConf);
+
+ FileStatus stat = raidfs.getFileStatus(file);
+ byte[] filebytes = new byte[(int)stat.getLen()];
+ FSDataInputStream stm = raidfs.open(file);
+ // Test that readFully returns.
+ stm.readFully(filebytes, 0, (int)stat.getLen());
+
+ stm = raidfs.open(file);
+ // Test that readFully returns.
+ stm.readFully(filebytes);
+ } finally {
+ myTearDown();
+ }
+ }
//
// creates a file and populate it with random data. Returns its crc.