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/trunk@1376653 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Robert Joseph Evans 2012-08-23 19:18:05 +00:00
parent 9ef3b2eb60
commit 4f8e1f779b
5 changed files with 45 additions and 22 deletions

View File

@ -966,6 +966,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
INCOMPATIBLE CHANGES

View File

@ -2014,7 +2014,11 @@ private FileStatus[] globStatusInternal(final URI uri,
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 @@ private Path[] globPathsLevel(Path[] parents, String[] filePattern,
}
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 @@ private FileStatus[] globStatusInternal(Path pathPattern, PathFilter filter)
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 @@ private Path[] globPathsLevel(Path[] parents, String[] filePattern,
}
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 void testListStatusFilterWithSomeMatches() throws Exception {
}
@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 void testListStatusFilterWithSomeMatches() throws Exception {
}
@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