This is an automated email from the ASF dual-hosted git repository. meteorgan pushed a commit to branch hdfs-recursive-delete in repository https://gitbox.apache.org/repos/asf/opendal.git
commit 2a636e01cfdc67ab618891867e157e8858ad8970 Author: meteorgan <[email protected]> AuthorDate: Tue Jan 6 23:36:50 2026 +0800 feat(services/hdfs): add delete with support for hdfs --- core/services/hdfs/src/backend.rs | 1 + core/services/hdfs/src/deleter.rs | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/core/services/hdfs/src/backend.rs b/core/services/hdfs/src/backend.rs index 5b00b59f8..49ae41337 100644 --- a/core/services/hdfs/src/backend.rs +++ b/core/services/hdfs/src/backend.rs @@ -169,6 +169,7 @@ impl Builder for HdfsBuilder { create_dir: true, delete: true, + delete_with_recursive: true, list: true, diff --git a/core/services/hdfs/src/deleter.rs b/core/services/hdfs/src/deleter.rs index eb0eeb8a8..57fd56148 100644 --- a/core/services/hdfs/src/deleter.rs +++ b/core/services/hdfs/src/deleter.rs @@ -33,7 +33,7 @@ impl HdfsDeleter { } impl oio::OneShotDelete for HdfsDeleter { - async fn delete_once(&self, path: String, _: OpDelete) -> Result<()> { + async fn delete_once(&self, path: String, args: OpDelete) -> Result<()> { let p = build_rooted_abs_path(&self.core.root, &path); let meta = self.core.client.metadata(&p); @@ -50,7 +50,11 @@ impl oio::OneShotDelete for HdfsDeleter { let meta = meta.ok().unwrap(); let result = if meta.is_dir() { - self.core.client.remove_dir(&p) + if args.recursive() { + self.core.client.remove_dir_all(&p) + } else { + self.core.client.remove_dir(&p) + } } else { self.core.client.remove_file(&p) };
