소스 검색

HADOOP-17689. Avoid Potential NPE in org.apache.hadoop.fs (#3008)

Signed-off-by: Takanobu Asanuma <tasanuma@apache.org>
Viraj Jasani 4 년 전
부모
커밋
fdd20a3cf4
1개의 변경된 파일6개의 추가작업 그리고 1개의 파일을 삭제
  1. 6 1
      hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/DelegateToFileSystem.java

+ 6 - 1
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/DelegateToFileSystem.java

@@ -24,6 +24,7 @@ import java.net.URISyntaxException;
 import java.util.Arrays;
 import java.util.EnumSet;
 import java.util.List;
+import java.util.Optional;
 import java.util.concurrent.CompletableFuture;
 
 import org.apache.hadoop.classification.InterfaceAudience;
@@ -90,7 +91,11 @@ public abstract class DelegateToFileSystem extends AbstractFileSystem {
     if (!createParent) { // parent must exist.
       // since this.create makes parent dirs automatically
       // we must throw exception if parent does not exist.
-      final FileStatus stat = getFileStatus(f.getParent());
+      Optional<Path> parentPath = f.getOptionalParentPath();
+      if (!parentPath.isPresent()) {
+        throw new FileNotFoundException("Missing parent:" + f);
+      }
+      final FileStatus stat = getFileStatus(parentPath.get());
       if (stat == null) {
         throw new FileNotFoundException("Missing parent:" + f);
       }