Author: enis Date: Mon May 6 23:12:55 2013 New Revision: 1479716 URL: http://svn.apache.org/r1479716 Log: HBASE-8478 HBASE-2231 breaks TestHRegion#testRecoveredEditsReplayCompaction under hadoop2 profile
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSUtils.java hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSUtils.java URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSUtils.java?rev=1479716&r1=1479715&r2=1479716&view=diff ============================================================================== --- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSUtils.java (original) +++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSUtils.java Mon May 6 23:12:55 2013 @@ -1398,7 +1398,9 @@ public abstract class FSUtils { /** * Calls fs.listStatus() and treats FileNotFoundException as non-fatal - * This accommodates differences between hadoop versions + * This accommodates differences between hadoop versions, where hadoop 1 + * does not throw a FileNotFoundException, and return an empty FileStatus[] + * while Hadoop 2 will throw FileNotFoundException. * * @param fs file system * @param dir directory Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java?rev=1479716&r1=1479715&r2=1479716&view=diff ============================================================================== --- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java (original) +++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java Mon May 6 23:12:55 2013 @@ -95,6 +95,7 @@ import org.apache.hadoop.hbase.regionser import org.apache.hadoop.hbase.test.MetricsAssertHelper; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.util.EnvironmentEdgeManagerTestHelper; +import org.apache.hadoop.hbase.util.FSUtils; import org.apache.hadoop.hbase.util.IncrementingEnvironmentEdge; import org.apache.hadoop.hbase.util.Pair; import org.apache.hadoop.hbase.util.PairOfSameType; @@ -422,8 +423,11 @@ public class TestHRegion extends HBaseTe //now find the compacted file, and manually add it to the recovered edits Path tmpDir = region.getRegionFileSystem().getTempDir(); - FileStatus[] files = region.getRegionFileSystem().getFileSystem().listStatus(tmpDir); - assertEquals(1, files.length); + FileStatus[] files = FSUtils.listStatus(fs, tmpDir); + String errorMsg = "Expected to find 1 file in the region temp directory " + + "from the compaction, could not find any"; + assertNotNull(errorMsg, files); + assertEquals(errorMsg, 1, files.length); //move the file inside region dir Path newFile = region.getRegionFileSystem().commitStoreFile(Bytes.toString(family), files[0].getPath()); @@ -459,8 +463,9 @@ public class TestHRegion extends HBaseTe LOG.info(sf.getPath()); } assertEquals(1, region.getStore(family).getStorefilesCount()); - files = region.getRegionFileSystem().getFileSystem().listStatus(tmpDir); - assertEquals(0, files.length); + files = FSUtils.listStatus(fs, tmpDir); + assertTrue("Expected to find 0 files inside " + tmpDir, + files == null || files.length == 0); for (long i = minSeqId; i < maxSeqId; i++) { Get get = new Get(Bytes.toBytes(i)); @@ -3176,6 +3181,7 @@ public class TestHRegion extends HBaseTe ctx.addThread(new RepeatingTestThread(ctx) { private int flushesSinceCompact = 0; private final int maxFlushesSinceCompact = 20; + @Override public void doAnAction() throws Exception { if (region.flushcache()) { ++flushesSinceCompact;