diff --git a/core/services/hdfs/src/backend.rs b/core/services/hdfs/src/backend.rs index 5b00b59f8df7..49ae413372c5 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 eb0eeb8a8c9a..57fd5614860e 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) };