From 06946f86bc98b73e10cf55e8009d661cc438c994 Mon Sep 17 00:00:00 2001 From: wolfkill <27876473+wolfkill@users.noreply.github.com> Date: Fri, 29 May 2026 09:47:51 +0800 Subject: [PATCH] Fix HadoopPinotFS isDirectory for missing paths --- .../apache/pinot/plugin/filesystem/HadoopPinotFS.java | 6 +++++- .../pinot/plugin/filesystem/HadoopPinotFSTest.java | 11 +++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/pinot-plugins/pinot-file-system/pinot-hdfs/src/main/java/org/apache/pinot/plugin/filesystem/HadoopPinotFS.java b/pinot-plugins/pinot-file-system/pinot-hdfs/src/main/java/org/apache/pinot/plugin/filesystem/HadoopPinotFS.java index be2aa28ec618..6da773e62fbe 100644 --- a/pinot-plugins/pinot-file-system/pinot-hdfs/src/main/java/org/apache/pinot/plugin/filesystem/HadoopPinotFS.java +++ b/pinot-plugins/pinot-file-system/pinot-hdfs/src/main/java/org/apache/pinot/plugin/filesystem/HadoopPinotFS.java @@ -239,7 +239,11 @@ public void copyFromLocalDir(File srcFile, URI dstUri) @Override public boolean isDirectory(URI uri) throws IOException { - return _hadoopFS.getFileStatus(new Path(uri)).isDirectory(); + try { + return _hadoopFS.getFileStatus(new Path(uri)).isDirectory(); + } catch (FileNotFoundException e) { + return false; + } } @Override diff --git a/pinot-plugins/pinot-file-system/pinot-hdfs/src/test/java/org/apache/pinot/plugin/filesystem/HadoopPinotFSTest.java b/pinot-plugins/pinot-file-system/pinot-hdfs/src/test/java/org/apache/pinot/plugin/filesystem/HadoopPinotFSTest.java index 9c5f7d9d576e..b6638a1b991d 100644 --- a/pinot-plugins/pinot-file-system/pinot-hdfs/src/test/java/org/apache/pinot/plugin/filesystem/HadoopPinotFSTest.java +++ b/pinot-plugins/pinot-file-system/pinot-hdfs/src/test/java/org/apache/pinot/plugin/filesystem/HadoopPinotFSTest.java @@ -151,6 +151,17 @@ public void testListFilesWithMetadata() } } + @Test + public void testIsDirectoryReturnsFalseForNonExistentPath() + throws IOException { + URI missingPath = URI.create(TMP_DIR + "/testIsDirectoryReturnsFalseForNonExistentPath/missing"); + try (HadoopPinotFS hadoopFS = new HadoopPinotFS()) { + hadoopFS.init(new PinotConfiguration()); + + Assert.assertFalse(hadoopFS.isDirectory(missingPath)); + } + } + @Test public void testDeleteBatchWithEmptyList() throws IOException {