diff --git a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/ITestS3GuardOutOfBandOperations.java b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/ITestS3GuardOutOfBandOperations.java index 70c62bf49ca..32ead7f3fed 100644 --- a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/ITestS3GuardOutOfBandOperations.java +++ b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/ITestS3GuardOutOfBandOperations.java @@ -76,6 +76,7 @@ import static org.apache.hadoop.fs.s3a.S3ATestUtils.removeBaseAndBucketOverrides import static org.apache.hadoop.test.LambdaTestUtils.eventually; import static org.apache.hadoop.test.LambdaTestUtils.intercept; +import static org.apache.hadoop.test.LambdaTestUtils.interceptFuture; import static org.junit.Assume.assumeTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -964,6 +965,14 @@ public class ITestS3GuardOutOfBandOperations extends AbstractS3ATestBase { // Delete the file without S3Guard (raw) deleteFile(rawFS, testFilePath); + // now, versioned FS or not, it will not be readable from the + // raw FS, and this will fail in both open APIs during the open + // phase, rather than when a read is attempted. + interceptFuture(FileNotFoundException.class, "", + rawFS.openFile(testFilePath).build()); + intercept(FileNotFoundException.class, () -> + rawFS.open(testFilePath).close()); + // File status will be still readable from s3guard S3AFileStatus status = (S3AFileStatus) guardedFs.getFileStatus(testFilePath); @@ -985,8 +994,6 @@ public class ITestS3GuardOutOfBandOperations extends AbstractS3ATestBase { Assertions.assertThat(toChar(bytes)) .describedAs("open(%s)", testFilePath) .isEqualTo(text); - expectExceptionWhenReadingOpenFileAPI(rawFS, testFilePath, text, - null); } else { // unversioned sequence expectExceptionWhenReading(testFilePath, text);