HADOOP-17398. Skipping network I/O in S3A getFileStatus(/) breaks some tests (#2493)

Follow-on to HADOOP-17323.

Contributed by Mukund Thakur.
This commit is contained in:
Mukund Thakur 2020-11-27 01:55:32 +05:30 committed by Steve Loughran
parent 1e59bf7394
commit 3ef0e3d615
2 changed files with 22 additions and 12 deletions

View File

@ -282,16 +282,24 @@ public int run(final String[] args, final PrintStream stream)
}
FileSystem fs = path.getFileSystem(getConf());
boolean nonAuth = command.getOpt(OPT_NONAUTH);
ScanResult result = execute(
new ScanArgsBuilder()
.withSourceFS(fs)
.withPath(path)
.withDoPurge(clean)
.withMinMarkerCount(expectedMin)
.withMaxMarkerCount(expectedMax)
.withLimit(limit)
.withNonAuth(nonAuth)
.build());
ScanResult result;
try {
result = execute(
new ScanArgsBuilder()
.withSourceFS(fs)
.withPath(path)
.withDoPurge(clean)
.withMinMarkerCount(expectedMin)
.withMaxMarkerCount(expectedMax)
.withLimit(limit)
.withNonAuth(nonAuth)
.build());
} catch (UnknownStoreException ex) {
// bucket doesn't exist.
// replace the stack trace with an error code.
throw new ExitUtil.ExitException(EXIT_NOT_FOUND,
ex.toString(), ex);
}
if (verbose) {
dumpFileSystemStatistics(out);
}

View File

@ -62,8 +62,10 @@ public void testNoBucketProbing() throws Exception {
Path root = new Path(uri);
expectUnknownStore(
() -> fs.getFileStatus(root));
//See HADOOP-17323.
assertTrue("root path should always exist", fs.exists(root));
assertTrue("getFileStatus on root should always return a directory",
fs.getFileStatus(root).isDirectory());
expectUnknownStore(
() -> fs.listStatus(root));