You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ae...@apache.org on 2015/09/29 22:30:12 UTC
[10/50] [abbrv] hadoop git commit: HADOOP-11918. Listing an empty s3a
root directory throws FileNotFound. Contributed by Lei (Eddy) Xu.
HADOOP-11918. Listing an empty s3a root directory throws FileNotFound. Contributed by Lei (Eddy) Xu.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/7fe521b1
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/7fe521b1
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/7fe521b1
Branch: refs/heads/HDFS-7240
Commit: 7fe521b1dd49f81ae325f78cf531cfff15be6641
Parents: 67b0e96
Author: cnauroth <cn...@apache.org>
Authored: Fri Sep 25 22:33:53 2015 -0700
Committer: cnauroth <cn...@apache.org>
Committed: Fri Sep 25 22:33:53 2015 -0700
----------------------------------------------------------------------
hadoop-common-project/hadoop-common/CHANGES.txt | 3 +++
.../contract/AbstractContractRootDirectoryTest.java | 14 ++++++++++++++
.../java/org/apache/hadoop/fs/s3a/S3AFileSystem.java | 3 +++
3 files changed, 20 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7fe521b1/hadoop-common-project/hadoop-common/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt
index 7071600..2803a90 100644
--- a/hadoop-common-project/hadoop-common/CHANGES.txt
+++ b/hadoop-common-project/hadoop-common/CHANGES.txt
@@ -1087,6 +1087,9 @@ Release 2.8.0 - UNRELEASED
HADOOP-12252. LocalDirAllocator should not throw NPE with empty string
configuration. (Zhihai Xu)
+ HADOOP-11918. Listing an empty s3a root directory throws FileNotFound.
+ (Lei (Eddy) Xu via cnauroth)
+
OPTIMIZATIONS
HADOOP-12051. ProtobufRpcEngine.invoke() should use Exception.toString()
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7fe521b1/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/AbstractContractRootDirectoryTest.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/AbstractContractRootDirectoryTest.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/AbstractContractRootDirectoryTest.java
index 83d9143..fb1455e 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/AbstractContractRootDirectoryTest.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/AbstractContractRootDirectoryTest.java
@@ -25,6 +25,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
+import org.apache.hadoop.fs.FileStatus;
import static org.apache.hadoop.fs.contract.ContractTestUtils.createFile;
import static org.apache.hadoop.fs.contract.ContractTestUtils.dataset;
@@ -120,4 +121,17 @@ public abstract class AbstractContractRootDirectoryTest extends AbstractFSContra
assertIsDirectory(root);
}
+ @Test
+ public void testListEmptyRootDirectory() throws IOException {
+ //extra sanity checks here to avoid support calls about complete loss of data
+ skipIfUnsupported(TEST_ROOT_TESTS_ENABLED);
+ FileSystem fs = getFileSystem();
+ Path root = new Path("/");
+ FileStatus[] statuses = fs.listStatus(root);
+ for (FileStatus status : statuses) {
+ ContractTestUtils.assertDeleted(fs, status.getPath(), true);
+ }
+ assertEquals("listStatus on empty root-directory returned a non-empty list",
+ 0, fs.listStatus(root).length);
+ }
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/7fe521b1/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AFileSystem.java
----------------------------------------------------------------------
diff --git a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AFileSystem.java b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AFileSystem.java
index f9e937f..83be184 100644
--- a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AFileSystem.java
+++ b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3AFileSystem.java
@@ -983,6 +983,9 @@ public class S3AFileSystem extends FileSystem {
return new S3AFileStatus(true, false,
f.makeQualified(uri, workingDir));
+ } else if (key.isEmpty()) {
+ LOG.debug("Found root directory");
+ return new S3AFileStatus(true, true, f.makeQualified(uri, workingDir));
}
} catch (AmazonServiceException e) {
if (e.getStatusCode() != 404) {