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)
         };

Reply via email to