Skip to content

Commit 854098b

Browse files
authored
[Fix-16331] Fix the resource file cannot be displayed hierarchically (#16799)
1 parent d07a2ed commit 854098b

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

dolphinscheduler-storage-plugin/dolphinscheduler-storage-hdfs/src/main/java/org/apache/dolphinscheduler/plugin/storage/hdfs/HdfsStorageOperator.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@
3232
import org.apache.hadoop.fs.FileStatus;
3333
import org.apache.hadoop.fs.FileSystem;
3434
import org.apache.hadoop.fs.FileUtil;
35-
import org.apache.hadoop.fs.LocatedFileStatus;
3635
import org.apache.hadoop.fs.Path;
37-
import org.apache.hadoop.fs.RemoteIterator;
3836
import org.apache.hadoop.hdfs.HdfsConfiguration;
3937
import org.apache.hadoop.security.UserGroupInformation;
4038

@@ -235,10 +233,12 @@ public List<StorageEntity> listFileStorageEntityRecursively(String resourceAbsol
235233
if (!fs.exists(path)) {
236234
continue;
237235
}
238-
RemoteIterator<LocatedFileStatus> remoteIterator = fs.listFiles(path, true);
239-
while (remoteIterator.hasNext()) {
240-
LocatedFileStatus locatedFileStatus = remoteIterator.next();
241-
result.add(transformFileStatusToResourceMetadata(locatedFileStatus));
236+
FileStatus[] fileStatuses = fs.listStatus(path);
237+
for (FileStatus fileStatus : fileStatuses) {
238+
if (fileStatus.isDirectory()) {
239+
foldersToFetch.addLast(fileStatus.getPath().toString());
240+
}
241+
result.add(transformFileStatusToResourceMetadata(fileStatus));
242242
}
243243
}
244244
return result;

dolphinscheduler-storage-plugin/dolphinscheduler-storage-hdfs/src/test/java/org/apache/dolphinscheduler/plugin/storage/hdfs/LocalStorageOperatorTest.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -296,10 +296,14 @@ public void testListStorageEntityRecursively_directory() {
296296
String resourceFileAbsolutePath = "file:" + baseDir;
297297
List<StorageEntity> storageEntities =
298298
storageOperator.listFileStorageEntityRecursively(resourceFileAbsolutePath);
299-
assertThat(storageEntities.size()).isEqualTo(1);
300-
301-
StorageEntity storageEntity2 = storageEntities.get(0);
302-
assertThat(storageEntity2.getFullName()).isEqualTo("file:" + Paths.get(baseDir, "sqlDirectory", "demo.sql"));
299+
assertThat(storageEntities.size()).isEqualTo(3);
300+
301+
StorageEntity storageEntity2 = storageEntities.stream()
302+
.filter(storageEntity -> storageEntity.getFileName().equals("demo.sql"))
303+
.findFirst()
304+
.get();
305+
assertThat(storageEntity2.getFullName())
306+
.isEqualTo("file:" + Paths.get(baseDir, "sqlDirectory", "demo.sql"));
303307
assertThat(storageEntity2.getFileName()).isEqualTo("demo.sql");
304308
assertThat(storageEntity2.getPfullName()).isEqualTo("file:" + Paths.get(baseDir, "sqlDirectory"));
305309
assertThat(storageEntity2.isDirectory()).isFalse();

0 commit comments

Comments
 (0)