svn merge -c 1376653 FIXES: HADOOP-8709. globStatus changed behavior from 0.20/1.x (Jason Lowe via bobby)

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1376655 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Robert Joseph Evans 2012-08-23 19:19:19 +00:00
parent 6b62c018e3
commit dc0376d6c5
5 changed files with 45 additions and 22 deletions

View File

@ -784,6 +784,9 @@ Release 0.23.3 - UNRELEASED
HADOOP-8225. DistCp fails when invoked by Oozie (daryn via bobby)
HADOOP-8709. globStatus changed behavior from 0.20/1.x (Jason Lowe via
bobby)
Release 0.23.2 - UNRELEASED
NEW FEATURES

View File

@ -2014,7 +2014,11 @@ public final class FileContext {
new GlobFilter(components[components.length - 1], filter);
if (fp.hasPattern()) { // last component has a pattern
// list parent directories and then glob the results
try {
results = listStatus(parentPaths, fp);
} catch (FileNotFoundException e) {
results = null;
}
hasGlob[0] = true;
} else { // last component does not have a pattern
// get all the path names
@ -2065,7 +2069,11 @@ public final class FileContext {
}
GlobFilter fp = new GlobFilter(filePattern[level]);
if (fp.hasPattern()) {
try {
parents = FileUtil.stat2Paths(listStatus(parents, fp));
} catch (FileNotFoundException e) {
parents = null;
}
hasGlob[0] = true;
} else {
for (int i = 0; i < parents.length; i++) {

View File

@ -1619,7 +1619,11 @@ public abstract class FileSystem extends Configured implements Closeable {
GlobFilter fp = new GlobFilter(components[components.length - 1], filter);
if (fp.hasPattern()) { // last component has a pattern
// list parent directories and then glob the results
try {
results = listStatus(parentPaths, fp);
} catch (FileNotFoundException e) {
results = null;
}
hasGlob[0] = true;
} else { // last component does not have a pattern
// remove the quoting of metachars in a non-regexp expansion
@ -1668,7 +1672,11 @@ public abstract class FileSystem extends Configured implements Closeable {
}
GlobFilter fp = new GlobFilter(filePattern[level]);
if (fp.hasPattern()) {
try {
parents = FileUtil.stat2Paths(listStatus(parents, fp));
} catch (FileNotFoundException e) {
parents = null;
}
hasGlob[0] = true;
} else { // the component does not have a pattern
// remove the quoting of metachars in a non-regexp expansion

View File

@ -364,15 +364,17 @@ public abstract class FSMainOperationsBaseTest {
}
@Test
public void testGlobStatusThrowsExceptionForNonExistentFile() throws Exception {
try {
// This should throw a FileNotFoundException
fSys.globStatus(
public void testGlobStatusNonExistentFile() throws Exception {
FileStatus[] paths = fSys.globStatus(
getTestRootPath(fSys, "test/hadoopfsdf"));
Assert.assertNull(paths);
paths = fSys.globStatus(
getTestRootPath(fSys, "test/hadoopfsdf/?"));
Assert.fail("Should throw FileNotFoundException");
} catch (FileNotFoundException fnfe) {
// expected
}
Assert.assertEquals(0, paths.length);
paths = fSys.globStatus(
getTestRootPath(fSys, "test/hadoopfsdf/xyz*/?"));
Assert.assertEquals(0, paths.length);
}
@Test

View File

@ -360,15 +360,17 @@ public abstract class FileContextMainOperationsBaseTest {
}
@Test
public void testGlobStatusThrowsExceptionForNonExistentFile() throws Exception {
try {
// This should throw a FileNotFoundException
fc.util().globStatus(
public void testGlobStatusNonExistentFile() throws Exception {
FileStatus[] paths = fc.util().globStatus(
getTestRootPath(fc, "test/hadoopfsdf"));
Assert.assertNull(paths);
paths = fc.util().globStatus(
getTestRootPath(fc, "test/hadoopfsdf/?"));
Assert.fail("Should throw FileNotFoundException");
} catch (FileNotFoundException fnfe) {
// expected
}
Assert.assertEquals(0, paths.length);
paths = fc.util().globStatus(
getTestRootPath(fc, "test/hadoopfsdf/xyz*/?"));
Assert.assertEquals(0, paths.length);
}
@Test