From 0eae37840fc9be608a090f9c21a6b2b889dd57d9 Mon Sep 17 00:00:00 2001 From: Ayush Saxena Date: Fri, 27 Sep 2024 14:33:07 +0530 Subject: [PATCH] HADOOP-19290. Operating on / in ChecksumFileSystem throws NPE. --- .../main/java/org/apache/hadoop/fs/ChecksumFileSystem.java | 2 +- .../java/org/apache/hadoop/fs/TestChecksumFileSystem.java | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/ChecksumFileSystem.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/ChecksumFileSystem.java index 586350d8439972..c9ccc09235ff59 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/ChecksumFileSystem.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/ChecksumFileSystem.java @@ -770,7 +770,7 @@ public FSDataOutputStream createNonRecursive(final Path f, abstract class FsOperation { boolean run(Path p) throws IOException { boolean status = apply(p); - if (status) { + if (status && !p.isRoot()) { Path checkFile = getChecksumFile(p); if (fs.exists(checkFile)) { apply(checkFile); diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestChecksumFileSystem.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestChecksumFileSystem.java index 4d611544908383..8b42aa6779dad3 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestChecksumFileSystem.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestChecksumFileSystem.java @@ -300,4 +300,11 @@ public void testSetPermissionCrc() throws Exception { assertEquals(perm, rawFs.getFileStatus(crc).getPermission()); } } + + @Test + public void testOperationOnRoot() throws Exception { + Path p = new Path("/"); + localFs.mkdirs(p); + localFs.setReplication(p, localFs.getFileStatus(p).getPermission().toShort()); + } }