This is an automated email from the ASF dual-hosted git repository. xuanwo pushed a commit to branch rename-create in repository https://gitbox.apache.org/repos/asf/incubator-opendal.git
commit 88eb2befc0d9455bf98e46b8e753f1f44ea896b9 Author: Xuanwo <[email protected]> AuthorDate: Mon Apr 17 17:34:19 2023 +0800 refactor: Rename `Create` to `CreateDir` for its behavior changed Signed-off-by: Xuanwo <[email protected]> --- core/src/docs/internals/accessor.rs | 2 +- core/src/layers/concurrent_limit.rs | 8 +-- core/src/layers/error_context.rs | 12 ++--- core/src/layers/logging.rs | 20 ++++---- core/src/layers/metrics.rs | 20 ++++---- core/src/layers/minitrace.rs | 8 +-- core/src/layers/prometheus.rs | 18 +++---- core/src/layers/retry.rs | 12 ++--- core/src/layers/tracing.rs | 8 +-- core/src/raw/accessor.rs | 13 +++-- core/src/raw/adapters/kv/backend.rs | 4 +- core/src/raw/layer.rs | 16 +++--- core/src/raw/operation.rs | 12 ++--- core/src/services/azblob/backend.rs | 2 +- core/src/services/azdfs/backend.rs | 10 +--- core/src/services/fs/backend.rs | 68 +++---------------------- core/src/services/ftp/backend.rs | 4 +- core/src/services/gcs/backend.rs | 2 +- core/src/services/ghac/backend.rs | 2 +- core/src/services/hdfs/backend.rs | 74 +++------------------------- core/src/services/ipmfs/backend.rs | 8 +-- core/src/services/obs/backend.rs | 2 +- core/src/services/oss/backend.rs | 2 +- core/src/services/s3/backend.rs | 2 +- core/src/services/wasabi/backend.rs | 2 +- core/src/services/webdav/backend.rs | 2 +- core/src/services/webhdfs/backend.rs | 4 +- core/src/types/operator/blocking_operator.rs | 7 ++- core/src/types/operator/operator.rs | 8 ++- core/src/types/ops.rs | 14 ++---- core/src/types/reader.rs | 4 +- core/src/types/writer.rs | 4 +- 32 files changed, 117 insertions(+), 257 deletions(-) diff --git a/core/src/docs/internals/accessor.rs b/core/src/docs/internals/accessor.rs index c290005d..f2089b2b 100644 --- a/core/src/docs/internals/accessor.rs +++ b/core/src/docs/internals/accessor.rs @@ -54,7 +54,7 @@ //! //! ```ignore //! pub trait Accessor { -//! async fn create(&self, path: &str) -> Result<()>; +//! async fn create_dir(&self, path: &str) -> Result<()>; //! } //! ``` //! diff --git a/core/src/layers/concurrent_limit.rs b/core/src/layers/concurrent_limit.rs index 0b325825..99e947b3 100644 --- a/core/src/layers/concurrent_limit.rs +++ b/core/src/layers/concurrent_limit.rs @@ -94,14 +94,14 @@ impl<A: Accessor> LayeredAccessor for ConcurrentLimitAccessor<A> { &self.inner } - async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { let _permit = self .semaphore .acquire() .await .expect("semaphore must be valid"); - self.inner.create(path, args).await + self.inner.create_dir(path, args).await } async fn read(&self, path: &str, args: OpRead) -> Result<(RpRead, Self::Reader)> { @@ -190,13 +190,13 @@ impl<A: Accessor> LayeredAccessor for ConcurrentLimitAccessor<A> { self.inner.batch(args).await } - fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + fn blocking_create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { let _permit = self .semaphore .try_acquire() .expect("semaphore must be valid"); - self.inner.blocking_create(path, args) + self.inner.blocking_create_dir(path, args) } fn blocking_read(&self, path: &str, args: OpRead) -> Result<(RpRead, Self::BlockingReader)> { diff --git a/core/src/layers/error_context.rs b/core/src/layers/error_context.rs index 95ab68c0..29724613 100644 --- a/core/src/layers/error_context.rs +++ b/core/src/layers/error_context.rs @@ -82,11 +82,11 @@ impl<A: Accessor> LayeredAccessor for ErrorContextAccessor<A> { self.meta.clone() } - async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { self.inner - .create(path, args) + .create_dir(path, args) .map_err(|err| { - err.with_operation(Operation::Create) + err.with_operation(Operation::CreateDir) .with_context("service", self.meta.scheme()) .with_context("path", path) }) @@ -236,9 +236,9 @@ impl<A: Accessor> LayeredAccessor for ErrorContextAccessor<A> { .await } - fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { - self.inner.blocking_create(path, args).map_err(|err| { - err.with_operation(Operation::BlockingCreate) + fn blocking_create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + self.inner.blocking_create_dir(path, args).map_err(|err| { + err.with_operation(Operation::BlockingCreateDir) .with_context("service", self.meta.scheme()) .with_context("path", path) }) diff --git a/core/src/layers/logging.rs b/core/src/layers/logging.rs index 96940318..706287ad 100644 --- a/core/src/layers/logging.rs +++ b/core/src/layers/logging.rs @@ -198,24 +198,24 @@ impl<A: Accessor> LayeredAccessor for LoggingAccessor<A> { result } - async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { debug!( target: LOGGING_TARGET, "service={} operation={} path={} -> started", self.scheme, - Operation::Create, + Operation::CreateDir, path ); self.inner - .create(path, args) + .create_dir(path, args) .await .map(|v| { debug!( target: LOGGING_TARGET, "service={} operation={} path={} -> finished", self.scheme, - Operation::Create, + Operation::CreateDir, path ); v @@ -227,7 +227,7 @@ impl<A: Accessor> LayeredAccessor for LoggingAccessor<A> { lvl, "service={} operation={} path={} -> {}: {err:?}", self.scheme, - Operation::Create, + Operation::CreateDir, path, self.err_status(&err) ) @@ -654,23 +654,23 @@ impl<A: Accessor> LayeredAccessor for LoggingAccessor<A> { .await } - fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + fn blocking_create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { debug!( target: LOGGING_TARGET, "service={} operation={} path={} -> started", self.scheme, - Operation::BlockingCreate, + Operation::BlockingCreateDir, path ); self.inner - .blocking_create(path, args) + .blocking_create_dir(path, args) .map(|v| { debug!( target: LOGGING_TARGET, "service={} operation={} path={} -> finished", self.scheme, - Operation::BlockingCreate, + Operation::BlockingCreateDir, path ); v @@ -682,7 +682,7 @@ impl<A: Accessor> LayeredAccessor for LoggingAccessor<A> { lvl, "service={} operation={} path={} -> {}: {err:?}", self.scheme, - Operation::BlockingCreate, + Operation::BlockingCreateDir, path, self.err_status(&err) ); diff --git a/core/src/layers/metrics.rs b/core/src/layers/metrics.rs index 4a24ca2e..2aff9003 100644 --- a/core/src/layers/metrics.rs +++ b/core/src/layers/metrics.rs @@ -213,12 +213,12 @@ impl MetricsHandler { requests_total_create: register_counter!( METRIC_REQUESTS_TOTAL, LABEL_SERVICE => service, - LABEL_OPERATION => Operation::Create.into_static(), + LABEL_OPERATION => Operation::CreateDir.into_static(), ), requests_duration_seconds_create: register_histogram!( METRIC_REQUESTS_DURATION_SECONDS, LABEL_SERVICE => service, - LABEL_OPERATION => Operation::Create.into_static(), + LABEL_OPERATION => Operation::CreateDir.into_static(), ), requests_total_read: register_counter!( @@ -322,12 +322,12 @@ impl MetricsHandler { requests_total_blocking_create: register_counter!( METRIC_REQUESTS_TOTAL, LABEL_SERVICE => service, - LABEL_OPERATION => Operation::BlockingCreate.into_static(), + LABEL_OPERATION => Operation::BlockingCreateDir.into_static(), ), requests_duration_seconds_blocking_create: register_histogram!( METRIC_REQUESTS_DURATION_SECONDS, LABEL_SERVICE => service, - LABEL_OPERATION => Operation::BlockingCreate.into_static(), + LABEL_OPERATION => Operation::BlockingCreateDir.into_static(), ), requests_total_blocking_read: register_counter!( @@ -460,13 +460,13 @@ impl<A: Accessor> LayeredAccessor for MetricsAccessor<A> { result } - async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { self.handle.requests_total_create.increment(1); let start = Instant::now(); self.inner - .create(path, args) + .create_dir(path, args) .map(|v| { let dur = start.elapsed().as_secs_f64(); @@ -474,7 +474,7 @@ impl<A: Accessor> LayeredAccessor for MetricsAccessor<A> { v.map_err(|e| { self.handle - .increment_errors_total(Operation::Create, e.kind()); + .increment_errors_total(Operation::CreateDir, e.kind()); e }) }) @@ -646,11 +646,11 @@ impl<A: Accessor> LayeredAccessor for MetricsAccessor<A> { }) } - fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + fn blocking_create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { self.handle.requests_total_blocking_create.increment(1); let start = Instant::now(); - let result = self.inner.blocking_create(path, args); + let result = self.inner.blocking_create_dir(path, args); let dur = start.elapsed().as_secs_f64(); self.handle @@ -659,7 +659,7 @@ impl<A: Accessor> LayeredAccessor for MetricsAccessor<A> { result.map_err(|e| { self.handle - .increment_errors_total(Operation::BlockingCreate, e.kind()); + .increment_errors_total(Operation::BlockingCreateDir, e.kind()); e }) } diff --git a/core/src/layers/minitrace.rs b/core/src/layers/minitrace.rs index dd2f821c..fd977e96 100644 --- a/core/src/layers/minitrace.rs +++ b/core/src/layers/minitrace.rs @@ -146,8 +146,8 @@ impl<A: Accessor> LayeredAccessor for MinitraceAccessor<A> { } #[trace("create", enter_on_poll = true)] - async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { - self.inner.create(path, args).await + async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + self.inner.create_dir(path, args).await } async fn read(&self, path: &str, args: OpRead) -> Result<(RpRead, Self::Reader)> { @@ -203,8 +203,8 @@ impl<A: Accessor> LayeredAccessor for MinitraceAccessor<A> { } #[trace("blocking_create")] - fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { - self.inner.blocking_create(path, args) + fn blocking_create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + self.inner.blocking_create_dir(path, args) } fn blocking_read(&self, path: &str, args: OpRead) -> Result<(RpRead, Self::BlockingReader)> { diff --git a/core/src/layers/prometheus.rs b/core/src/layers/prometheus.rs index 65040402..a83c716a 100644 --- a/core/src/layers/prometheus.rs +++ b/core/src/layers/prometheus.rs @@ -201,7 +201,7 @@ impl<A: Accessor> LayeredAccessor for PrometheusAccessor<A> { &self.inner } - async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { self.stats .requests_total .with_label_values(&[&self.scheme]) @@ -210,14 +210,14 @@ impl<A: Accessor> LayeredAccessor for PrometheusAccessor<A> { let timer = self .stats .requests_duration_seconds - .with_label_values(&[&self.scheme, Operation::Create.into_static()]) + .with_label_values(&[&self.scheme, Operation::CreateDir.into_static()]) .start_timer(); - let create_res = self.inner.create(path, args).await; + let create_res = self.inner.create_dir(path, args).await; timer.observe_duration(); create_res.map_err(|e| { self.stats - .increment_errors_total(Operation::Create, e.kind()); + .increment_errors_total(Operation::CreateDir, e.kind()); e }) } @@ -428,24 +428,24 @@ impl<A: Accessor> LayeredAccessor for PrometheusAccessor<A> { }) } - fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + fn blocking_create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { self.stats .requests_total - .with_label_values(&[&self.scheme, Operation::BlockingCreate.into_static()]) + .with_label_values(&[&self.scheme, Operation::BlockingCreateDir.into_static()]) .inc(); let timer = self .stats .requests_duration_seconds - .with_label_values(&[&self.scheme, Operation::BlockingCreate.into_static()]) + .with_label_values(&[&self.scheme, Operation::BlockingCreateDir.into_static()]) .start_timer(); - let result = self.inner.blocking_create(path, args); + let result = self.inner.blocking_create_dir(path, args); timer.observe_duration(); result.map_err(|e| { self.stats - .increment_errors_total(Operation::BlockingCreate, e.kind()); + .increment_errors_total(Operation::BlockingCreateDir, e.kind()); e }) } diff --git a/core/src/layers/retry.rs b/core/src/layers/retry.rs index 96d31c3b..401bd53e 100644 --- a/core/src/layers/retry.rs +++ b/core/src/layers/retry.rs @@ -168,15 +168,15 @@ impl<A: Accessor> LayeredAccessor for RetryAccessor<A> { &self.inner } - async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { - { || self.inner.create(path, args.clone()) } + async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + { || self.inner.create_dir(path, args.clone()) } .retry(&self.builder) .when(|e| e.is_temporary()) .notify(|err, dur| { warn!( target: "opendal::service", "operation={} -> retry after {}s: error={:?}", - Operation::Create, dur.as_secs_f64(), err) + Operation::CreateDir, dur.as_secs_f64(), err) }) .map(|v| v.map_err(|e| e.set_persistent())) .await @@ -322,15 +322,15 @@ impl<A: Accessor> LayeredAccessor for RetryAccessor<A> { .await } - fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { - { || self.inner.blocking_create(path, args.clone()) } + fn blocking_create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + { || self.inner.blocking_create_dir(path, args.clone()) } .retry(&self.builder) .when(|e| e.is_temporary()) .notify(|err, dur| { warn!( target: "opendal::service", "operation={} -> retry after {}s: error={:?}", - Operation::BlockingCreate, dur.as_secs_f64(), err) + Operation::BlockingCreateDir, dur.as_secs_f64(), err) }) .call() .map_err(|e| e.set_persistent()) diff --git a/core/src/layers/tracing.rs b/core/src/layers/tracing.rs index 535db6c6..c210290e 100644 --- a/core/src/layers/tracing.rs +++ b/core/src/layers/tracing.rs @@ -151,8 +151,8 @@ impl<A: Accessor> LayeredAccessor for TracingAccessor<A> { } #[tracing::instrument(level = "debug", skip(self))] - async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { - self.inner.create(path, args).await + async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + self.inner.create_dir(path, args).await } #[tracing::instrument(level = "debug", skip(self))] @@ -208,8 +208,8 @@ impl<A: Accessor> LayeredAccessor for TracingAccessor<A> { } #[tracing::instrument(level = "debug", skip(self))] - fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { - self.inner.blocking_create(path, args) + fn blocking_create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + self.inner.blocking_create_dir(path, args) } #[tracing::instrument(level = "debug", skip(self))] diff --git a/core/src/raw/accessor.rs b/core/src/raw/accessor.rs index 84d4b7aa..5bd30f4d 100644 --- a/core/src/raw/accessor.rs +++ b/core/src/raw/accessor.rs @@ -86,8 +86,7 @@ pub trait Accessor: Send + Sync + Debug + Unpin + 'static { /// /// - Input path MUST match with EntryMode, DON'T NEED to check mode. /// - Create on existing dir SHOULD succeed. - /// - Create on existing file SHOULD overwrite and truncate. - async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { let (_, _) = (path, args); Err(Error::new( @@ -256,7 +255,7 @@ pub trait Accessor: Send + Sync + Debug + Unpin + 'static { /// This operation is the blocking version of [`Accessor::create`] /// /// Require [`AccessorCapability::Write`] and [`AccessorCapability::Blocking`] - fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + fn blocking_create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { let (_, _) = (path, args); Err(Error::new( @@ -417,8 +416,8 @@ impl<T: Accessor + ?Sized> Accessor for Arc<T> { self.as_ref().info() } - async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { - self.as_ref().create(path, args).await + async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + self.as_ref().create_dir(path, args).await } async fn read(&self, path: &str, args: OpRead) -> Result<(RpRead, Self::Reader)> { @@ -457,8 +456,8 @@ impl<T: Accessor + ?Sized> Accessor for Arc<T> { self.as_ref().presign(path, args).await } - fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { - self.as_ref().blocking_create(path, args) + fn blocking_create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + self.as_ref().blocking_create_dir(path, args) } fn blocking_read(&self, path: &str, args: OpRead) -> Result<(RpRead, Self::BlockingReader)> { self.as_ref().blocking_read(path, args) diff --git a/core/src/raw/adapters/kv/backend.rs b/core/src/raw/adapters/kv/backend.rs index 1f373cbb..15dc7beb 100644 --- a/core/src/raw/adapters/kv/backend.rs +++ b/core/src/raw/adapters/kv/backend.rs @@ -68,13 +68,13 @@ impl<S: Adapter> Accessor for Backend<S> { am } - async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> { + async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> { let p = build_abs_path(&self.root, path); self.kv.set(&p, &[]).await?; Ok(RpCreate::default()) } - fn blocking_create(&self, path: &str, _: OpCreate) -> Result<RpCreate> { + fn blocking_create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> { let p = build_abs_path(&self.root, path); self.kv.blocking_set(&p, &[])?; diff --git a/core/src/raw/layer.rs b/core/src/raw/layer.rs index bb49abdd..5c122952 100644 --- a/core/src/raw/layer.rs +++ b/core/src/raw/layer.rs @@ -151,8 +151,8 @@ pub trait LayeredAccessor: Send + Sync + Debug + Unpin + 'static { self.inner().info() } - async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { - self.inner().create(path, args).await + async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + self.inner().create_dir(path, args).await } async fn read(&self, path: &str, args: OpRead) -> Result<(RpRead, Self::Reader)>; @@ -187,8 +187,8 @@ pub trait LayeredAccessor: Send + Sync + Debug + Unpin + 'static { self.inner().presign(path, args).await } - fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { - self.inner().blocking_create(path, args) + fn blocking_create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + self.inner().blocking_create_dir(path, args) } fn blocking_read(&self, path: &str, args: OpRead) -> Result<(RpRead, Self::BlockingReader)>; @@ -229,8 +229,8 @@ impl<L: LayeredAccessor> Accessor for L { (self as &L).metadata() } - async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { - (self as &L).create(path, args).await + async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + (self as &L).create_dir(path, args).await } async fn read(&self, path: &str, args: OpRead) -> Result<(RpRead, Self::Reader)> { @@ -273,8 +273,8 @@ impl<L: LayeredAccessor> Accessor for L { (self as &L).presign(path, args).await } - fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { - (self as &L).blocking_create(path, args) + fn blocking_create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + (self as &L).blocking_create_dir(path, args) } fn blocking_read(&self, path: &str, args: OpRead) -> Result<(RpRead, Self::BlockingReader)> { diff --git a/core/src/raw/operation.rs b/core/src/raw/operation.rs index 7fd661ac..1c37cbf4 100644 --- a/core/src/raw/operation.rs +++ b/core/src/raw/operation.rs @@ -25,8 +25,8 @@ pub enum Operation { /// Operation for [`crate::raw::Accessor::info`] #[default] Info, - /// Operation for [`crate::raw::Accessor::create`] - Create, + /// Operation for [`crate::raw::Accessor::create_dir`] + CreateDir, /// Operation for [`crate::raw::Accessor::read`] Read, /// Operation for [`crate::raw::Accessor::write`] @@ -47,8 +47,8 @@ pub enum Operation { Batch, /// Operation for [`crate::raw::Accessor::presign`] Presign, - /// Operation for [`crate::raw::Accessor::blocking_create`] - BlockingCreate, + /// Operation for [`crate::raw::Accessor::blocking_create_dir`] + BlockingCreateDir, /// Operation for [`crate::raw::Accessor::blocking_read`] BlockingRead, /// Operation for [`crate::raw::Accessor::blocking_write`] @@ -84,7 +84,7 @@ impl From<Operation> for &'static str { fn from(v: Operation) -> &'static str { match v { Operation::Info => "metadata", - Operation::Create => "create", + Operation::CreateDir => "create_dir", Operation::Read => "read", Operation::Write => "write", Operation::Copy => "copy", @@ -95,7 +95,7 @@ impl From<Operation> for &'static str { Operation::Scan => "scan", Operation::Presign => "presign", Operation::Batch => "batch", - Operation::BlockingCreate => "blocking_create", + Operation::BlockingCreateDir => "blocking_create_dir", Operation::BlockingRead => "blocking_read", Operation::BlockingWrite => "blocking_write", Operation::BlockingCopy => "blocking_copy", diff --git a/core/src/services/azblob/backend.rs b/core/src/services/azblob/backend.rs index 867b2659..5daa104e 100644 --- a/core/src/services/azblob/backend.rs +++ b/core/src/services/azblob/backend.rs @@ -461,7 +461,7 @@ impl Accessor for AzblobBackend { am } - async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> { + async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> { let mut req = self .core .azblob_put_blob_request(path, Some(0), None, AsyncBody::Empty)?; diff --git a/core/src/services/azdfs/backend.rs b/core/src/services/azdfs/backend.rs index 825e7466..5c0b68db 100644 --- a/core/src/services/azdfs/backend.rs +++ b/core/src/services/azdfs/backend.rs @@ -319,16 +319,10 @@ impl Accessor for AzdfsBackend { am } - async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { - let resource = match args.mode() { - EntryMode::FILE => "file", - EntryMode::DIR => "directory", - _ => unimplemented!("not supported object mode"), - }; - + async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> { let mut req = self.core - .azdfs_create_request(path, resource, None, None, AsyncBody::Empty)?; + .azdfs_create_request(path, "directory", None, None, AsyncBody::Empty)?; self.core.sign(&mut req).await?; diff --git a/core/src/services/fs/backend.rs b/core/src/services/fs/backend.rs index e5159db5..9bedaa1d 100644 --- a/core/src/services/fs/backend.rs +++ b/core/src/services/fs/backend.rs @@ -313,41 +313,12 @@ impl Accessor for FsBackend { am } - async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> { let p = self.root.join(path.trim_end_matches('/')); - if args.mode() == EntryMode::FILE { - let parent = p - .parent() - .ok_or_else(|| { - Error::new( - ErrorKind::Unexpected, - "path should have parent but not, it must be malformed", - ) - .with_context("input", p.to_string_lossy()) - })? - .to_path_buf(); - - fs::create_dir_all(&parent).await.map_err(parse_io_error)?; - - fs::OpenOptions::new() - .create(true) - .truncate(true) - .write(true) - .open(&p) - .await - .map_err(parse_io_error)?; - - return Ok(RpCreate::default()); - } - - if args.mode() == EntryMode::DIR { - fs::create_dir_all(&p).await.map_err(parse_io_error)?; - - return Ok(RpCreate::default()); - } + fs::create_dir_all(&p).await.map_err(parse_io_error)?; - unreachable!() + Ok(RpCreate::default()) } /// # Notes @@ -540,39 +511,12 @@ impl Accessor for FsBackend { Ok((RpList::default(), Some(rd))) } - fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + fn blocking_create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> { let p = self.root.join(path.trim_end_matches('/')); - if args.mode() == EntryMode::FILE { - let parent = p - .parent() - .ok_or_else(|| { - Error::new( - ErrorKind::Unexpected, - "path should have parent but not, it must be malformed", - ) - .with_context("input", p.to_string_lossy()) - })? - .to_path_buf(); - - std::fs::create_dir_all(parent).map_err(parse_io_error)?; - - std::fs::OpenOptions::new() - .create(true) - .write(true) - .open(&p) - .map_err(parse_io_error)?; - - return Ok(RpCreate::default()); - } - - if args.mode() == EntryMode::DIR { - std::fs::create_dir_all(&p).map_err(parse_io_error)?; - - return Ok(RpCreate::default()); - } + std::fs::create_dir_all(p).map_err(parse_io_error)?; - unreachable!() + Ok(RpCreate::default()) } fn blocking_read(&self, path: &str, args: OpRead) -> Result<(RpRead, Self::BlockingReader)> { diff --git a/core/src/services/ftp/backend.rs b/core/src/services/ftp/backend.rs index 75262323..f509eff2 100644 --- a/core/src/services/ftp/backend.rs +++ b/core/src/services/ftp/backend.rs @@ -323,8 +323,8 @@ impl Accessor for FtpBackend { am } - async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> { - let mut ftp_stream = self.ftp_connect(Operation::Create).await?; + async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> { + let mut ftp_stream = self.ftp_connect(Operation::CreateDir).await?; let paths: Vec<&str> = path.split_inclusive('/').collect(); diff --git a/core/src/services/gcs/backend.rs b/core/src/services/gcs/backend.rs index cbd5cb5f..6cfafaad 100644 --- a/core/src/services/gcs/backend.rs +++ b/core/src/services/gcs/backend.rs @@ -381,7 +381,7 @@ impl Accessor for GcsBackend { am } - async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> { + async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> { let mut req = self .core .gcs_insert_object_request(path, Some(0), None, AsyncBody::Empty)?; diff --git a/core/src/services/ghac/backend.rs b/core/src/services/ghac/backend.rs index a3279b9d..159b0022 100644 --- a/core/src/services/ghac/backend.rs +++ b/core/src/services/ghac/backend.rs @@ -305,7 +305,7 @@ impl Accessor for GhacBackend { am } - async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> { + async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> { // ignore creation of dir. if path.ends_with('/') { return Ok(RpCreate::default()); diff --git a/core/src/services/hdfs/backend.rs b/core/src/services/hdfs/backend.rs index e13948d3..84f38ec5 100644 --- a/core/src/services/hdfs/backend.rs +++ b/core/src/services/hdfs/backend.rs @@ -243,43 +243,12 @@ impl Accessor for HdfsBackend { am } - async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> { let p = build_rooted_abs_path(&self.root, path); - match args.mode() { - EntryMode::FILE => { - let parent = PathBuf::from(&p) - .parent() - .ok_or_else(|| { - Error::new( - ErrorKind::Unexpected, - "path should have parent but not, it must be malformed", - ) - .with_context("input", &p) - })? - .to_path_buf(); - - self.client - .create_dir(&parent.to_string_lossy()) - .map_err(parse_io_error)?; - - self.client - .open_file() - .create(true) - .write(true) - .truncate(true) - .open(&p) - .map_err(parse_io_error)?; - - Ok(RpCreate::default()) - } - EntryMode::DIR => { - self.client.create_dir(&p).map_err(parse_io_error)?; + self.client.create_dir(&p).map_err(parse_io_error)?; - Ok(RpCreate::default()) - } - EntryMode::Unknown => unreachable!(), - } + Ok(RpCreate::default()) } async fn read(&self, path: &str, args: OpRead) -> Result<(RpRead, Self::Reader)> { @@ -412,43 +381,12 @@ impl Accessor for HdfsBackend { Ok((RpList::default(), Some(rd))) } - fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { + fn blocking_create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> { let p = build_rooted_abs_path(&self.root, path); - match args.mode() { - EntryMode::FILE => { - let parent = PathBuf::from(&p) - .parent() - .ok_or_else(|| { - Error::new( - ErrorKind::Unexpected, - "path should have parent but not, it must be malformed", - ) - .with_context("input", &p) - })? - .to_path_buf(); - - self.client - .create_dir(&parent.to_string_lossy()) - .map_err(parse_io_error)?; - - self.client - .open_file() - .create(true) - .write(true) - .truncate(true) - .open(&p) - .map_err(parse_io_error)?; - - Ok(RpCreate::default()) - } - EntryMode::DIR => { - self.client.create_dir(&p).map_err(parse_io_error)?; + self.client.create_dir(&p).map_err(parse_io_error)?; - Ok(RpCreate::default()) - } - EntryMode::Unknown => unreachable!(), - } + Ok(RpCreate::default()) } fn blocking_read(&self, path: &str, args: OpRead) -> Result<(RpRead, Self::BlockingReader)> { diff --git a/core/src/services/ipmfs/backend.rs b/core/src/services/ipmfs/backend.rs index 9984a4d1..c2e59f84 100644 --- a/core/src/services/ipmfs/backend.rs +++ b/core/src/services/ipmfs/backend.rs @@ -81,12 +81,8 @@ impl Accessor for IpmfsBackend { am } - async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> { - let resp = match args.mode() { - EntryMode::DIR => self.ipmfs_mkdir(path).await?, - EntryMode::FILE => self.ipmfs_write(path, AsyncBody::Empty).await?, - _ => unreachable!(), - }; + async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> { + let resp = self.ipmfs_mkdir(path).await?; let status = resp.status(); diff --git a/core/src/services/obs/backend.rs b/core/src/services/obs/backend.rs index 9732b6f7..fb5fc2f2 100644 --- a/core/src/services/obs/backend.rs +++ b/core/src/services/obs/backend.rs @@ -314,7 +314,7 @@ impl Accessor for ObsBackend { am } - async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> { + async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> { let mut req = self .core .obs_put_object_request(path, Some(0), None, AsyncBody::Empty)?; diff --git a/core/src/services/oss/backend.rs b/core/src/services/oss/backend.rs index 4458338d..56eff1e4 100644 --- a/core/src/services/oss/backend.rs +++ b/core/src/services/oss/backend.rs @@ -371,7 +371,7 @@ impl Accessor for OssBackend { am } - async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> { + async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> { let resp = self .core .oss_put_object(path, None, None, None, None, AsyncBody::Empty) diff --git a/core/src/services/s3/backend.rs b/core/src/services/s3/backend.rs index 3bb09efb..c3fa6aac 100644 --- a/core/src/services/s3/backend.rs +++ b/core/src/services/s3/backend.rs @@ -921,7 +921,7 @@ impl Accessor for S3Backend { am } - async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> { + async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> { let mut req = self.core .s3_put_object_request(path, Some(0), None, None, None, AsyncBody::Empty)?; diff --git a/core/src/services/wasabi/backend.rs b/core/src/services/wasabi/backend.rs index de4735b8..49ed6bc3 100644 --- a/core/src/services/wasabi/backend.rs +++ b/core/src/services/wasabi/backend.rs @@ -911,7 +911,7 @@ impl Accessor for WasabiBackend { am } - async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> { + async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> { let mut req = self.core .put_object_request(path, Some(0), None, None, None, AsyncBody::Empty)?; diff --git a/core/src/services/webdav/backend.rs b/core/src/services/webdav/backend.rs index 2f7fb30c..23032855 100644 --- a/core/src/services/webdav/backend.rs +++ b/core/src/services/webdav/backend.rs @@ -278,7 +278,7 @@ impl Accessor for WebdavBackend { ma } - async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> { + async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> { self.ensure_parent_path(path).await?; let abs_path = build_abs_path(&self.root, path); diff --git a/core/src/services/webhdfs/backend.rs b/core/src/services/webhdfs/backend.rs index 295ef755..094bef24 100644 --- a/core/src/services/webhdfs/backend.rs +++ b/core/src/services/webhdfs/backend.rs @@ -444,7 +444,7 @@ impl WebhdfsBackend { } } StatusCode::NOT_FOUND => { - self.create("/", OpCreate::new(EntryMode::DIR)).await?; + self.create_dir("/", OpCreate::new()).await?; } _ => return Err(parse_error(resp).await?), } @@ -473,7 +473,7 @@ impl Accessor for WebhdfsBackend { } /// Create a file or directory - async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> { + async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> { let req = self .webhdfs_create_object_request(path, Some(0), None, AsyncBody::Empty) .await?; diff --git a/core/src/types/operator/blocking_operator.rs b/core/src/types/operator/blocking_operator.rs index a2503ed6..c6bae2dd 100644 --- a/core/src/types/operator/blocking_operator.rs +++ b/core/src/types/operator/blocking_operator.rs @@ -303,8 +303,7 @@ impl BlockingOperator { .with_context("path", &path)); } - self.inner() - .blocking_create(&path, OpCreate::new(EntryMode::DIR))?; + self.inner().blocking_create_dir(&path, OpCreate::new())?; Ok(()) } @@ -420,7 +419,7 @@ impl BlockingOperator { let op = OpRead::new().with_range(range.into()); - BlockingReader::create(self.inner().clone(), &path, op) + BlockingReader::create_dir(self.inner().clone(), &path, op) } /// Write bytes into given path. @@ -638,7 +637,7 @@ impl BlockingOperator { } let op = OpWrite::default().with_append(); - BlockingWriter::create(self.inner().clone(), &path, op) + BlockingWriter::create_dir(self.inner().clone(), &path, op) } /// Delete given path. diff --git a/core/src/types/operator/operator.rs b/core/src/types/operator/operator.rs index fed7e285..32a60a22 100644 --- a/core/src/types/operator/operator.rs +++ b/core/src/types/operator/operator.rs @@ -390,9 +390,7 @@ impl Operator { .with_context("path", &path)); } - self.inner() - .create(&path, OpCreate::new(EntryMode::DIR)) - .await?; + self.inner().create_dir(&path, OpCreate::new()).await?; Ok(()) } @@ -606,7 +604,7 @@ impl Operator { ); } - Reader::create(self.inner().clone(), &path, args).await + Reader::create_dir(self.inner().clone(), &path, args).await } /// Write bytes into path. @@ -817,7 +815,7 @@ impl Operator { ); } - Writer::create(self.inner().clone(), &path, args.with_append()).await + Writer::create_dir(self.inner().clone(), &path, args.with_append()).await } /// Write data with extra options. diff --git a/core/src/types/ops.rs b/core/src/types/ops.rs index 3d24f45e..616316a5 100644 --- a/core/src/types/ops.rs +++ b/core/src/types/ops.rs @@ -22,25 +22,17 @@ use std::time::Duration; use crate::raw::*; -use crate::*; /// Args for `create` operation. /// /// The path must be normalized. #[derive(Debug, Clone, Default)] -pub struct OpCreate { - mode: EntryMode, -} +pub struct OpCreate {} impl OpCreate { /// Create a new `OpCreate`. - pub fn new(mode: EntryMode) -> Self { - Self { mode } - } - - /// Get mode from option. - pub fn mode(&self) -> EntryMode { - self.mode + pub fn new() -> Self { + Self::default() } } diff --git a/core/src/types/reader.rs b/core/src/types/reader.rs index 63c30665..068a7c8c 100644 --- a/core/src/types/reader.rs +++ b/core/src/types/reader.rs @@ -67,7 +67,7 @@ impl Reader { /// /// We don't want to expose those details to users so keep this function /// in crate only. - pub(crate) async fn create(acc: FusedAccessor, path: &str, op: OpRead) -> Result<Self> { + pub(crate) async fn create_dir(acc: FusedAccessor, path: &str, op: OpRead) -> Result<Self> { let (_, r) = acc.read(path, op).await?; Ok(Reader { @@ -192,7 +192,7 @@ impl BlockingReader { /// /// We don't want to expose those details to users so keep this function /// in crate only. - pub(crate) fn create(acc: FusedAccessor, path: &str, op: OpRead) -> Result<Self> { + pub(crate) fn create_dir(acc: FusedAccessor, path: &str, op: OpRead) -> Result<Self> { let acc_meta = acc.info(); let r = if acc_meta.hints().contains(AccessorHint::ReadSeekable) { diff --git a/core/src/types/writer.rs b/core/src/types/writer.rs index 24ac2793..96c8c0e5 100644 --- a/core/src/types/writer.rs +++ b/core/src/types/writer.rs @@ -51,7 +51,7 @@ impl Writer { /// /// We don't want to expose those details to users so keep this function /// in crate only. - pub(crate) async fn create(acc: FusedAccessor, path: &str, op: OpWrite) -> Result<Self> { + pub(crate) async fn create_dir(acc: FusedAccessor, path: &str, op: OpWrite) -> Result<Self> { let (_, w) = acc.write(path, op).await?; Ok(Writer { @@ -185,7 +185,7 @@ impl BlockingWriter { /// /// We don't want to expose those details to users so keep this function /// in crate only. - pub(crate) fn create(acc: FusedAccessor, path: &str, op: OpWrite) -> Result<Self> { + pub(crate) fn create_dir(acc: FusedAccessor, path: &str, op: OpWrite) -> Result<Self> { let (_, w) = acc.blocking_write(path, op)?; Ok(BlockingWriter { inner: w })
