From 9ef494d6df2e9a13c4e5b9b03bcb36ec30c0a7c0 Mon Sep 17 00:00:00 2001 From: Lzzzt <101313294+Lzzzzzt@users.noreply.github.com> Date: Fri, 12 Jul 2024 20:12:17 +0800 Subject: [PATCH] refactor(core)!: Return `Arc` for metadata (#4883) * refactor: `Operator` add a field to store metadata and avoid calling metadata Signed-off-by: Lzzzt * refactor: change the signature of `Access::info` Signed-off-by: Lzzzt refactor: change the signature of `Access::info` and `AccessDyn::info` Signed-off-by: Lzzzt refactor: change the signature of `Access::info` and `AccessDyn::info` Signed-off-by: Lzzzt revert: revert Signed-off-by: Lzzzt revert: revert Signed-off-by: Lzzzt Update store.rs refactor: change the signature of `Access::info` and `AccessDyn::info` Signed-off-by: Lzzzt --------- Signed-off-by: Lzzzt --- core/src/docs/internals/accessor.rs | 4 ++-- core/src/layers/blocking.rs | 8 +++++--- core/src/layers/complete.rs | 13 +++++++------ core/src/layers/error_context.rs | 5 +++-- core/src/layers/immutable_index.rs | 7 ++++--- core/src/layers/logging.rs | 3 ++- core/src/layers/metrics.rs | 2 +- core/src/layers/minitrace.rs | 3 ++- core/src/layers/oteltrace.rs | 3 ++- core/src/layers/retry.rs | 4 ++-- core/src/layers/timeout.rs | 4 ++-- core/src/layers/tracing.rs | 3 ++- core/src/raw/accessor.rs | 13 +++++++------ core/src/raw/adapters/kv/backend.rs | 4 ++-- core/src/raw/adapters/typed_kv/backend.rs | 4 ++-- core/src/raw/layer.rs | 9 +++++---- core/src/raw/oio/list/flat_list.rs | 5 +++-- core/src/services/aliyun_drive/backend.rs | 4 ++-- core/src/services/alluxio/backend.rs | 4 ++-- core/src/services/azblob/backend.rs | 4 ++-- core/src/services/azdls/backend.rs | 4 ++-- core/src/services/azfile/backend.rs | 4 ++-- core/src/services/b2/backend.rs | 4 ++-- core/src/services/chainsafe/backend.rs | 4 ++-- core/src/services/compfs/backend.rs | 4 ++-- core/src/services/cos/backend.rs | 4 ++-- core/src/services/dbfs/backend.rs | 4 ++-- core/src/services/dropbox/backend.rs | 4 ++-- core/src/services/fs/backend.rs | 4 ++-- core/src/services/ftp/backend.rs | 5 +++-- core/src/services/gcs/backend.rs | 4 ++-- core/src/services/gdrive/backend.rs | 4 ++-- core/src/services/ghac/backend.rs | 5 +++-- core/src/services/github/backend.rs | 4 ++-- core/src/services/hdfs/backend.rs | 4 ++-- core/src/services/hdfs_native/backend.rs | 4 ++-- core/src/services/http/backend.rs | 5 +++-- core/src/services/huggingface/backend.rs | 4 ++-- core/src/services/icloud/backend.rs | 4 ++-- core/src/services/ipfs/backend.rs | 4 ++-- core/src/services/ipmfs/backend.rs | 4 ++-- core/src/services/koofr/backend.rs | 4 ++-- core/src/services/monoiofs/backend.rs | 3 ++- core/src/services/obs/backend.rs | 4 ++-- core/src/services/onedrive/backend.rs | 5 +++-- core/src/services/oss/backend.rs | 4 ++-- core/src/services/pcloud/backend.rs | 4 ++-- core/src/services/s3/backend.rs | 4 ++-- core/src/services/seafile/backend.rs | 4 ++-- core/src/services/sftp/backend.rs | 5 +++-- core/src/services/supabase/backend.rs | 4 ++-- core/src/services/swift/backend.rs | 4 ++-- core/src/services/upyun/backend.rs | 4 ++-- core/src/services/vercel_artifacts/backend.rs | 5 +++-- core/src/services/vercel_blob/backend.rs | 4 ++-- core/src/services/webdav/backend.rs | 4 ++-- core/src/services/webhdfs/backend.rs | 5 +++-- core/src/services/yandex_disk/backend.rs | 4 ++-- core/src/types/operator/metadata.rs | 6 ++++-- 59 files changed, 146 insertions(+), 124 deletions(-) diff --git a/core/src/docs/internals/accessor.rs b/core/src/docs/internals/accessor.rs index ca0480d45b4..8a14ed4898a 100644 --- a/core/src/docs/internals/accessor.rs +++ b/core/src/docs/internals/accessor.rs @@ -132,7 +132,7 @@ //! ..Default::default() //! }); //! -//! am +//! am.into() //! } //! } //! ``` @@ -302,7 +302,7 @@ //! ..Default::default() //! }); //! -//! am +//! am.into() //! } //! //! async fn read(&self, path: &str, args: OpRead) -> Result<(RpRead, Self::Reader)> { diff --git a/core/src/layers/blocking.rs b/core/src/layers/blocking.rs index 7293ced965a..d3c04174e1a 100644 --- a/core/src/layers/blocking.rs +++ b/core/src/layers/blocking.rs @@ -15,6 +15,8 @@ // specific language governing permissions and limitations // under the License. +use std::sync::Arc; + use tokio::runtime::Handle; use crate::raw::*; @@ -178,10 +180,10 @@ impl LayeredAccess for BlockingAccessor { &self.inner } - fn metadata(&self) -> AccessorInfo { - let mut meta = self.inner.info(); + fn metadata(&self) -> Arc { + let mut meta = self.inner.info().as_ref().clone(); meta.full_capability_mut().blocking = true; - meta + meta.into() } async fn create_dir(&self, path: &str, args: OpCreateDir) -> Result { diff --git a/core/src/layers/complete.rs b/core/src/layers/complete.rs index 68b0340aa71..d89aecb2cce 100644 --- a/core/src/layers/complete.rs +++ b/core/src/layers/complete.rs @@ -118,7 +118,7 @@ impl Layer for CompleteLayer { /// Provide complete wrapper for backend. pub struct CompleteAccessor { - meta: AccessorInfo, + meta: Arc, inner: Arc, } @@ -380,13 +380,14 @@ impl LayeredAccess for CompleteAccessor { &self.inner } - fn metadata(&self) -> AccessorInfo { - let mut meta = self.meta.clone(); + // Todo: May move the logic to the implement of Layer::layer of CompleteAccessor + fn metadata(&self) -> Arc { + let mut meta = (*self.meta).clone(); let cap = meta.full_capability_mut(); if cap.list && cap.write_can_empty { cap.create_dir = true; } - meta + meta.into() } async fn create_dir(&self, path: &str, args: OpCreateDir) -> Result { @@ -730,11 +731,11 @@ mod tests { type BlockingWriter = oio::BlockingWriter; type BlockingLister = oio::BlockingLister; - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut info = AccessorInfo::default(); info.set_native_capability(self.capability); - info + info.into() } async fn create_dir(&self, _: &str, _: OpCreateDir) -> Result { diff --git a/core/src/layers/error_context.rs b/core/src/layers/error_context.rs index cabe84b0538..78ab14db3ba 100644 --- a/core/src/layers/error_context.rs +++ b/core/src/layers/error_context.rs @@ -17,6 +17,7 @@ use std::fmt::Debug; use std::fmt::Formatter; +use std::sync::Arc; use futures::TryFutureExt; @@ -56,7 +57,7 @@ impl Layer for ErrorContextLayer { /// Provide error context wrapper for backend. pub struct ErrorContextAccessor { - meta: AccessorInfo, + meta: Arc, inner: A, } @@ -79,7 +80,7 @@ impl LayeredAccess for ErrorContextAccessor { &self.inner } - fn metadata(&self) -> AccessorInfo { + fn metadata(&self) -> Arc { self.meta.clone() } diff --git a/core/src/layers/immutable_index.rs b/core/src/layers/immutable_index.rs index 14d2c8442f5..1889878c974 100644 --- a/core/src/layers/immutable_index.rs +++ b/core/src/layers/immutable_index.rs @@ -17,6 +17,7 @@ use std::collections::HashSet; use std::fmt::Debug; +use std::sync::Arc; use std::vec::IntoIter; use crate::raw::*; @@ -145,14 +146,14 @@ impl LayeredAccess for ImmutableIndexAccessor { } /// Add list capabilities for underlying storage services. - fn metadata(&self) -> AccessorInfo { - let mut meta = self.inner.info(); + fn metadata(&self) -> Arc { + let mut meta = (*self.inner.info()).clone(); let cap = meta.full_capability_mut(); cap.list = true; cap.list_with_recursive = true; - meta + meta.into() } async fn read(&self, path: &str, args: OpRead) -> Result<(RpRead, Self::Reader)> { diff --git a/core/src/layers/logging.rs b/core/src/layers/logging.rs index 507745c6d14..ca45a80f13b 100644 --- a/core/src/layers/logging.rs +++ b/core/src/layers/logging.rs @@ -18,6 +18,7 @@ use std::fmt::Debug; use std::sync::atomic::AtomicU64; use std::sync::atomic::Ordering; +use std::sync::Arc; use bytes::Buf; use futures::FutureExt; @@ -221,7 +222,7 @@ impl LayeredAccess for LoggingAccessor { &self.inner } - fn metadata(&self) -> AccessorInfo { + fn metadata(&self) -> Arc { debug!( target: LOGGING_TARGET, "service={} operation={} -> started", diff --git a/core/src/layers/metrics.rs b/core/src/layers/metrics.rs index decbad81a8d..5dc220a123b 100644 --- a/core/src/layers/metrics.rs +++ b/core/src/layers/metrics.rs @@ -414,7 +414,7 @@ impl LayeredAccess for MetricsAccessor { &self.inner } - fn metadata(&self) -> AccessorInfo { + fn metadata(&self) -> Arc { self.handle.requests_total_metadata.increment(1); let start = Instant::now(); diff --git a/core/src/layers/minitrace.rs b/core/src/layers/minitrace.rs index bca4a2e584d..a06e9890fdb 100644 --- a/core/src/layers/minitrace.rs +++ b/core/src/layers/minitrace.rs @@ -17,6 +17,7 @@ use std::fmt::Debug; use std::future::Future; +use std::sync::Arc; use futures::FutureExt; use minitrace::prelude::*; @@ -139,7 +140,7 @@ impl LayeredAccess for MinitraceAccessor { } #[trace] - fn metadata(&self) -> AccessorInfo { + fn metadata(&self) -> Arc { self.inner.info() } diff --git a/core/src/layers/oteltrace.rs b/core/src/layers/oteltrace.rs index b04ad22fddb..c03233d12f0 100644 --- a/core/src/layers/oteltrace.rs +++ b/core/src/layers/oteltrace.rs @@ -16,6 +16,7 @@ // under the License. use std::future::Future; +use std::sync::Arc; use futures::FutureExt; use opentelemetry::global; @@ -75,7 +76,7 @@ impl LayeredAccess for OtelTraceAccessor { &self.inner } - fn metadata(&self) -> AccessorInfo { + fn metadata(&self) -> Arc { let tracer = global::tracer("opendal"); tracer.in_span("metadata", |_cx| self.inner.info()) } diff --git a/core/src/layers/retry.rs b/core/src/layers/retry.rs index 4d42098394a..af0fdc214de 100644 --- a/core/src/layers/retry.rs +++ b/core/src/layers/retry.rs @@ -800,7 +800,7 @@ mod tests { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_native_capability(Capability { read: true, @@ -813,7 +813,7 @@ mod tests { ..Default::default() }); - am + am.into() } async fn stat(&self, _: &str, _: OpStat) -> Result { diff --git a/core/src/layers/timeout.rs b/core/src/layers/timeout.rs index 1cbc0c5ac10..095d1044fd5 100644 --- a/core/src/layers/timeout.rs +++ b/core/src/layers/timeout.rs @@ -400,7 +400,7 @@ mod tests { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_native_capability(Capability { read: true, @@ -408,7 +408,7 @@ mod tests { ..Default::default() }); - am + am.into() } /// This function will build a reader that always return pending. diff --git a/core/src/layers/tracing.rs b/core/src/layers/tracing.rs index 4a2dc4bc006..ff5c4c79eb5 100644 --- a/core/src/layers/tracing.rs +++ b/core/src/layers/tracing.rs @@ -17,6 +17,7 @@ use std::fmt::Debug; use std::future::Future; +use std::sync::Arc; use futures::FutureExt; use tracing::Span; @@ -140,7 +141,7 @@ impl LayeredAccess for TracingAccessor { } #[tracing::instrument(level = "debug")] - fn metadata(&self) -> AccessorInfo { + fn metadata(&self) -> Arc { self.inner.info() } diff --git a/core/src/raw/accessor.rs b/core/src/raw/accessor.rs index d2fed8f1f07..888dc4fa18e 100644 --- a/core/src/raw/accessor.rs +++ b/core/src/raw/accessor.rs @@ -80,7 +80,7 @@ pub trait Access: Send + Sync + Debug + Unpin + 'static { /// /// - scheme: declare the scheme of backend. /// - capabilities: declare the capabilities of current backend. - fn info(&self) -> AccessorInfo; + fn info(&self) -> Arc; /// Invoke the `create` operation on the specified path /// @@ -399,7 +399,7 @@ pub trait Access: Send + Sync + Debug + Unpin + 'static { /// `Box`. pub trait AccessDyn: Send + Sync + Debug + Unpin { /// Dyn version of [`Accessor::info`] - fn info_dyn(&self) -> AccessorInfo; + fn info_dyn(&self) -> Arc; /// Dyn version of [`Accessor::create_dir`] fn create_dir_dyn<'a>( &'a self, @@ -484,7 +484,7 @@ where BlockingLister = oio::BlockingLister, >, { - fn info_dyn(&self) -> AccessorInfo { + fn info_dyn(&self) -> Arc { self.info() } @@ -607,7 +607,7 @@ impl Access for dyn AccessDyn { type Lister = oio::Lister; type BlockingLister = oio::BlockingLister; - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { self.info_dyn() } @@ -693,7 +693,7 @@ impl Access for () { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { AccessorInfo { scheme: Scheme::Custom("dummy"), root: "".to_string(), @@ -701,6 +701,7 @@ impl Access for () { native_capability: Capability::default(), full_capability: Capability::default(), } + .into() } } @@ -717,7 +718,7 @@ impl Access for Arc { type BlockingWriter = T::BlockingWriter; type BlockingLister = T::BlockingLister; - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { self.as_ref().info() } diff --git a/core/src/raw/adapters/kv/backend.rs b/core/src/raw/adapters/kv/backend.rs index 625e7ea9829..55de6b5c2c9 100644 --- a/core/src/raw/adapters/kv/backend.rs +++ b/core/src/raw/adapters/kv/backend.rs @@ -64,7 +64,7 @@ impl Access for Backend { type Lister = HierarchyLister; type BlockingLister = HierarchyLister; - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am: AccessorInfo = self.kv.metadata().into(); am.set_root(&self.root); @@ -84,7 +84,7 @@ impl Access for Backend { am.set_native_capability(cap); - am + am.into() } async fn read(&self, path: &str, args: OpRead) -> Result<(RpRead, Self::Reader)> { diff --git a/core/src/raw/adapters/typed_kv/backend.rs b/core/src/raw/adapters/typed_kv/backend.rs index fd6271691b1..e65ac6f4e6b 100644 --- a/core/src/raw/adapters/typed_kv/backend.rs +++ b/core/src/raw/adapters/typed_kv/backend.rs @@ -59,7 +59,7 @@ impl Access for Backend { type Lister = HierarchyLister; type BlockingLister = HierarchyLister; - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let kv_info = self.kv.info(); let mut am: AccessorInfo = AccessorInfo::default(); am.set_root(&self.root); @@ -91,7 +91,7 @@ impl Access for Backend { am.set_native_capability(cap); - am + am.into() } async fn read(&self, path: &str, args: OpRead) -> Result<(RpRead, Self::Reader)> { diff --git a/core/src/raw/layer.rs b/core/src/raw/layer.rs index aade6c3d34f..f9872c6cf03 100644 --- a/core/src/raw/layer.rs +++ b/core/src/raw/layer.rs @@ -16,6 +16,7 @@ // under the License. use std::fmt::Debug; +use std::sync::Arc; use futures::Future; @@ -139,7 +140,7 @@ pub trait LayeredAccess: Send + Sync + Debug + Unpin + 'static { fn inner(&self) -> &Self::Inner; - fn metadata(&self) -> AccessorInfo { + fn metadata(&self) -> Arc { self.inner().info() } @@ -246,7 +247,7 @@ impl Access for L { type Lister = L::Lister; type BlockingLister = L::BlockingLister; - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { (self as &L).metadata() } @@ -358,10 +359,10 @@ mod tests { type Lister = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Custom("test")); - am + am.into() } async fn delete(&self, _: &str, _: OpDelete) -> Result { diff --git a/core/src/raw/oio/list/flat_list.rs b/core/src/raw/oio/list/flat_list.rs index b310d534c0a..a399539b9cd 100644 --- a/core/src/raw/oio/list/flat_list.rs +++ b/core/src/raw/oio/list/flat_list.rs @@ -176,6 +176,7 @@ where #[cfg(test)] mod tests { use std::collections::HashMap; + use std::sync::Arc; use std::vec; use std::vec::IntoIter; @@ -216,11 +217,11 @@ mod tests { type Lister = (); type BlockingLister = MockLister; - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.full_capability_mut().list = true; - am + am.into() } fn blocking_list(&self, path: &str, _: OpList) -> Result<(RpList, Self::BlockingLister)> { diff --git a/core/src/services/aliyun_drive/backend.rs b/core/src/services/aliyun_drive/backend.rs index b04c50621e3..7662d8f912d 100644 --- a/core/src/services/aliyun_drive/backend.rs +++ b/core/src/services/aliyun_drive/backend.rs @@ -258,7 +258,7 @@ impl Access for AliyunDriveBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::AliyunDrive) .set_root(&self.core.root) @@ -284,7 +284,7 @@ impl Access for AliyunDriveBackend { ..Default::default() }); - am + am.into() } async fn create_dir(&self, path: &str, _args: OpCreateDir) -> Result { diff --git a/core/src/services/alluxio/backend.rs b/core/src/services/alluxio/backend.rs index 78cad123c4b..018c138ed56 100644 --- a/core/src/services/alluxio/backend.rs +++ b/core/src/services/alluxio/backend.rs @@ -188,7 +188,7 @@ impl Access for AlluxioBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Alluxio) .set_root(&self.core.root) @@ -212,7 +212,7 @@ impl Access for AlluxioBackend { ..Default::default() }); - am + am.into() } async fn create_dir(&self, path: &str, _: OpCreateDir) -> Result { diff --git a/core/src/services/azblob/backend.rs b/core/src/services/azblob/backend.rs index feae2970e95..eb7c2f02419 100644 --- a/core/src/services/azblob/backend.rs +++ b/core/src/services/azblob/backend.rs @@ -557,7 +557,7 @@ impl Access for AzblobBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Azblob) .set_root(&self.core.root) @@ -598,7 +598,7 @@ impl Access for AzblobBackend { ..Default::default() }); - am + am.into() } async fn stat(&self, path: &str, args: OpStat) -> Result { diff --git a/core/src/services/azdls/backend.rs b/core/src/services/azdls/backend.rs index 86975606a84..4774383c81c 100644 --- a/core/src/services/azdls/backend.rs +++ b/core/src/services/azdls/backend.rs @@ -251,7 +251,7 @@ impl Access for AzdlsBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Azdls) .set_root(&self.core.root) @@ -272,7 +272,7 @@ impl Access for AzdlsBackend { ..Default::default() }); - am + am.into() } async fn create_dir(&self, path: &str, _: OpCreateDir) -> Result { diff --git a/core/src/services/azfile/backend.rs b/core/src/services/azfile/backend.rs index 195483d1db8..c47abf0ca5d 100644 --- a/core/src/services/azfile/backend.rs +++ b/core/src/services/azfile/backend.rs @@ -272,7 +272,7 @@ impl Access for AzfileBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Azfile) .set_root(&self.core.root) @@ -291,7 +291,7 @@ impl Access for AzfileBackend { ..Default::default() }); - am + am.into() } async fn create_dir(&self, path: &str, _: OpCreateDir) -> Result { diff --git a/core/src/services/b2/backend.rs b/core/src/services/b2/backend.rs index ddf441057ac..e210f3e6546 100644 --- a/core/src/services/b2/backend.rs +++ b/core/src/services/b2/backend.rs @@ -274,7 +274,7 @@ impl Access for B2Backend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::B2) .set_root(&self.core.root) @@ -316,7 +316,7 @@ impl Access for B2Backend { ..Default::default() }); - am + am.into() } /// B2 have a get_file_info api required a file_id field, but field_id need call list api, list api also return file info diff --git a/core/src/services/chainsafe/backend.rs b/core/src/services/chainsafe/backend.rs index 03249ecf0a0..a961ec35a99 100644 --- a/core/src/services/chainsafe/backend.rs +++ b/core/src/services/chainsafe/backend.rs @@ -210,7 +210,7 @@ impl Access for ChainsafeBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Chainsafe) .set_root(&self.core.root) @@ -230,7 +230,7 @@ impl Access for ChainsafeBackend { ..Default::default() }); - am + am.into() } async fn create_dir(&self, path: &str, _: OpCreateDir) -> Result { diff --git a/core/src/services/compfs/backend.rs b/core/src/services/compfs/backend.rs index b69b55f66fd..fb218b096e4 100644 --- a/core/src/services/compfs/backend.rs +++ b/core/src/services/compfs/backend.rs @@ -106,7 +106,7 @@ impl Access for CompfsBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Compfs) .set_root(&self.core.root.to_string_lossy()) @@ -129,7 +129,7 @@ impl Access for CompfsBackend { ..Default::default() }); - am + am.into() } async fn create_dir(&self, path: &str, _: OpCreateDir) -> Result { diff --git a/core/src/services/cos/backend.rs b/core/src/services/cos/backend.rs index 17b872bdb10..11478b0e8c0 100644 --- a/core/src/services/cos/backend.rs +++ b/core/src/services/cos/backend.rs @@ -260,7 +260,7 @@ impl Access for CosBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Cos) .set_root(&self.core.root) @@ -309,7 +309,7 @@ impl Access for CosBackend { ..Default::default() }); - am + am.into() } async fn stat(&self, path: &str, args: OpStat) -> Result { diff --git a/core/src/services/dbfs/backend.rs b/core/src/services/dbfs/backend.rs index 925a1b0b507..5da63fe8991 100644 --- a/core/src/services/dbfs/backend.rs +++ b/core/src/services/dbfs/backend.rs @@ -172,7 +172,7 @@ impl Access for DbfsBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Dbfs) .set_root(&self.core.root) @@ -188,7 +188,7 @@ impl Access for DbfsBackend { ..Default::default() }); - am + am.into() } async fn create_dir(&self, path: &str, _: OpCreateDir) -> Result { diff --git a/core/src/services/dropbox/backend.rs b/core/src/services/dropbox/backend.rs index 8097e6c1791..f62b9e3d474 100644 --- a/core/src/services/dropbox/backend.rs +++ b/core/src/services/dropbox/backend.rs @@ -43,7 +43,7 @@ impl Access for DropboxBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut ma = AccessorInfo::default(); ma.set_scheme(Scheme::Dropbox) .set_root(&self.core.root) @@ -70,7 +70,7 @@ impl Access for DropboxBackend { ..Default::default() }); - ma + ma.into() } async fn create_dir(&self, path: &str, _args: OpCreateDir) -> Result { diff --git a/core/src/services/fs/backend.rs b/core/src/services/fs/backend.rs index 344e2799bb3..eb338bf5595 100644 --- a/core/src/services/fs/backend.rs +++ b/core/src/services/fs/backend.rs @@ -181,7 +181,7 @@ impl Access for FsBackend { type BlockingWriter = FsWriter; type BlockingLister = Option>; - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Fs) .set_root(&self.core.root.to_string_lossy()) @@ -206,7 +206,7 @@ impl Access for FsBackend { ..Default::default() }); - am + am.into() } async fn create_dir(&self, path: &str, _: OpCreateDir) -> Result { diff --git a/core/src/services/ftp/backend.rs b/core/src/services/ftp/backend.rs index f5b4112e665..17c0fd54056 100644 --- a/core/src/services/ftp/backend.rs +++ b/core/src/services/ftp/backend.rs @@ -20,6 +20,7 @@ use std::fmt::Debug; use std::fmt::Formatter; use std::str; use std::str::FromStr; +use std::sync::Arc; use async_tls::TlsConnector; use bb8::PooledConnection; @@ -289,7 +290,7 @@ impl Access for FtpBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Ftp) .set_root(&self.root) @@ -310,7 +311,7 @@ impl Access for FtpBackend { ..Default::default() }); - am + am.into() } async fn create_dir(&self, path: &str, _: OpCreateDir) -> Result { diff --git a/core/src/services/gcs/backend.rs b/core/src/services/gcs/backend.rs index 5d195640548..ecc74a9731c 100644 --- a/core/src/services/gcs/backend.rs +++ b/core/src/services/gcs/backend.rs @@ -338,7 +338,7 @@ impl Access for GcsBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Gcs) .set_root(&self.core.root) @@ -387,7 +387,7 @@ impl Access for GcsBackend { ..Default::default() }); - am + am.into() } async fn stat(&self, path: &str, args: OpStat) -> Result { diff --git a/core/src/services/gdrive/backend.rs b/core/src/services/gdrive/backend.rs index fbf34c82554..082dd49b945 100644 --- a/core/src/services/gdrive/backend.rs +++ b/core/src/services/gdrive/backend.rs @@ -47,7 +47,7 @@ impl Access for GdriveBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut ma = AccessorInfo::default(); ma.set_scheme(Scheme::Gdrive) .set_root(&self.core.root) @@ -67,7 +67,7 @@ impl Access for GdriveBackend { ..Default::default() }); - ma + ma.into() } async fn create_dir(&self, path: &str, _args: OpCreateDir) -> Result { diff --git a/core/src/services/ghac/backend.rs b/core/src/services/ghac/backend.rs index a9d9550dc27..9b3932c15c1 100644 --- a/core/src/services/ghac/backend.rs +++ b/core/src/services/ghac/backend.rs @@ -17,6 +17,7 @@ use std::collections::HashMap; use std::env; +use std::sync::Arc; use bytes::Buf; use bytes::Bytes; @@ -233,7 +234,7 @@ impl Access for GhacBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Ghac) .set_root(&self.root) @@ -249,7 +250,7 @@ impl Access for GhacBackend { ..Default::default() }); - am + am.into() } /// Some self-hosted GHES instances are backed by AWS S3 services which only returns diff --git a/core/src/services/github/backend.rs b/core/src/services/github/backend.rs index e46125f56ad..714ed6c4fc0 100644 --- a/core/src/services/github/backend.rs +++ b/core/src/services/github/backend.rs @@ -229,7 +229,7 @@ impl Access for GithubBackend { type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Github) .set_root(&self.core.root) @@ -251,7 +251,7 @@ impl Access for GithubBackend { ..Default::default() }); - am + am.into() } async fn create_dir(&self, path: &str, _: OpCreateDir) -> Result { diff --git a/core/src/services/hdfs/backend.rs b/core/src/services/hdfs/backend.rs index f0caf134d1b..f56353e9eb1 100644 --- a/core/src/services/hdfs/backend.rs +++ b/core/src/services/hdfs/backend.rs @@ -252,7 +252,7 @@ impl Access for HdfsBackend { type BlockingWriter = HdfsWriter; type BlockingLister = Option; - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Hdfs) .set_root(&self.root) @@ -275,7 +275,7 @@ impl Access for HdfsBackend { ..Default::default() }); - am + am.into() } async fn create_dir(&self, path: &str, _: OpCreateDir) -> Result { diff --git a/core/src/services/hdfs_native/backend.rs b/core/src/services/hdfs_native/backend.rs index 257518e0003..fab3e56c1be 100644 --- a/core/src/services/hdfs_native/backend.rs +++ b/core/src/services/hdfs_native/backend.rs @@ -178,7 +178,7 @@ impl Access for HdfsNativeBackend { type Lister = Option; type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::HdfsNative) .set_root(&self.root) @@ -192,7 +192,7 @@ impl Access for HdfsNativeBackend { ..Default::default() }); - am + am.into() } async fn create_dir(&self, path: &str, _args: OpCreateDir) -> Result { diff --git a/core/src/services/http/backend.rs b/core/src/services/http/backend.rs index 6b2fce60f65..920a8673456 100644 --- a/core/src/services/http/backend.rs +++ b/core/src/services/http/backend.rs @@ -18,6 +18,7 @@ use std::collections::HashMap; use std::fmt::Debug; use std::fmt::Formatter; +use std::sync::Arc; use http::header; use http::header::IF_MATCH; @@ -228,7 +229,7 @@ impl Access for HttpBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut ma = AccessorInfo::default(); ma.set_scheme(Scheme::Http) .set_root(&self.root) @@ -245,7 +246,7 @@ impl Access for HttpBackend { ..Default::default() }); - ma + ma.into() } async fn stat(&self, path: &str, args: OpStat) -> Result { diff --git a/core/src/services/huggingface/backend.rs b/core/src/services/huggingface/backend.rs index 93c26d3017d..c97befbae59 100644 --- a/core/src/services/huggingface/backend.rs +++ b/core/src/services/huggingface/backend.rs @@ -250,7 +250,7 @@ impl Access for HuggingfaceBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Huggingface) .set_native_capability(Capability { @@ -263,7 +263,7 @@ impl Access for HuggingfaceBackend { ..Default::default() }); - am + am.into() } async fn stat(&self, path: &str, _: OpStat) -> Result { diff --git a/core/src/services/icloud/backend.rs b/core/src/services/icloud/backend.rs index 6f56e8ae952..e7957b8dd9d 100644 --- a/core/src/services/icloud/backend.rs +++ b/core/src/services/icloud/backend.rs @@ -273,7 +273,7 @@ impl Access for IcloudBackend { type Lister = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut ma = AccessorInfo::default(); ma.set_scheme(Scheme::Icloud) .set_root(&self.core.root) @@ -282,7 +282,7 @@ impl Access for IcloudBackend { read: true, ..Default::default() }); - ma + ma.into() } async fn stat(&self, path: &str, _: OpStat) -> Result { diff --git a/core/src/services/ipfs/backend.rs b/core/src/services/ipfs/backend.rs index fec0b37bb35..b1d1e67397f 100644 --- a/core/src/services/ipfs/backend.rs +++ b/core/src/services/ipfs/backend.rs @@ -166,7 +166,7 @@ impl Access for IpfsBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut ma = AccessorInfo::default(); ma.set_scheme(Scheme::Ipfs) .set_root(&self.root) @@ -180,7 +180,7 @@ impl Access for IpfsBackend { ..Default::default() }); - ma + ma.into() } /// IPFS's stat behavior highly depends on its implementation. diff --git a/core/src/services/ipmfs/backend.rs b/core/src/services/ipmfs/backend.rs index ae855d7b79f..9ebef20e44f 100644 --- a/core/src/services/ipmfs/backend.rs +++ b/core/src/services/ipmfs/backend.rs @@ -68,7 +68,7 @@ impl Access for IpmfsBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Ipmfs) .set_root(&self.root) @@ -85,7 +85,7 @@ impl Access for IpmfsBackend { ..Default::default() }); - am + am.into() } async fn create_dir(&self, path: &str, _: OpCreateDir) -> Result { diff --git a/core/src/services/koofr/backend.rs b/core/src/services/koofr/backend.rs index 71781b13661..98008187e81 100644 --- a/core/src/services/koofr/backend.rs +++ b/core/src/services/koofr/backend.rs @@ -242,7 +242,7 @@ impl Access for KoofrBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Koofr) .set_root(&self.core.root) @@ -267,7 +267,7 @@ impl Access for KoofrBackend { ..Default::default() }); - am + am.into() } async fn create_dir(&self, path: &str, _: OpCreateDir) -> Result { diff --git a/core/src/services/monoiofs/backend.rs b/core/src/services/monoiofs/backend.rs index f68fd6b8fa7..b7c85e88084 100644 --- a/core/src/services/monoiofs/backend.rs +++ b/core/src/services/monoiofs/backend.rs @@ -16,6 +16,7 @@ // under the License. use std::fmt::Debug; +use std::sync::Arc; use serde::Deserialize; @@ -85,7 +86,7 @@ impl Access for MonoiofsBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { todo!() } } diff --git a/core/src/services/obs/backend.rs b/core/src/services/obs/backend.rs index 8f21522329f..09e68c235be 100644 --- a/core/src/services/obs/backend.rs +++ b/core/src/services/obs/backend.rs @@ -254,7 +254,7 @@ impl Access for ObsBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Obs) .set_root(&self.core.root) @@ -302,7 +302,7 @@ impl Access for ObsBackend { ..Default::default() }); - am + am.into() } async fn stat(&self, path: &str, args: OpStat) -> Result { diff --git a/core/src/services/onedrive/backend.rs b/core/src/services/onedrive/backend.rs index 9ba74b5bbc1..b28f25f6a59 100644 --- a/core/src/services/onedrive/backend.rs +++ b/core/src/services/onedrive/backend.rs @@ -16,6 +16,7 @@ // under the License. use std::fmt::Debug; +use std::sync::Arc; use bytes::Buf; use bytes::Bytes; @@ -68,7 +69,7 @@ impl Access for OnedriveBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut ma = AccessorInfo::default(); ma.set_scheme(Scheme::Onedrive) .set_root(&self.root) @@ -82,7 +83,7 @@ impl Access for OnedriveBackend { ..Default::default() }); - ma + ma.into() } async fn create_dir(&self, path: &str, _: OpCreateDir) -> Result { diff --git a/core/src/services/oss/backend.rs b/core/src/services/oss/backend.rs index 319fd397e0f..b2679f1b2a3 100644 --- a/core/src/services/oss/backend.rs +++ b/core/src/services/oss/backend.rs @@ -382,7 +382,7 @@ impl Access for OssBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Oss) .set_root(&self.core.root) @@ -436,7 +436,7 @@ impl Access for OssBackend { ..Default::default() }); - am + am.into() } async fn stat(&self, path: &str, args: OpStat) -> Result { diff --git a/core/src/services/pcloud/backend.rs b/core/src/services/pcloud/backend.rs index 071925cbd9a..688230aa10a 100644 --- a/core/src/services/pcloud/backend.rs +++ b/core/src/services/pcloud/backend.rs @@ -235,7 +235,7 @@ impl Access for PcloudBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Pcloud) .set_root(&self.core.root) @@ -257,7 +257,7 @@ impl Access for PcloudBackend { ..Default::default() }); - am + am.into() } async fn create_dir(&self, path: &str, _: OpCreateDir) -> Result { diff --git a/core/src/services/s3/backend.rs b/core/src/services/s3/backend.rs index ab255ff8926..b2d7c9ca070 100644 --- a/core/src/services/s3/backend.rs +++ b/core/src/services/s3/backend.rs @@ -1032,7 +1032,7 @@ impl Access for S3Backend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::S3) .set_root(&self.core.root) @@ -1090,7 +1090,7 @@ impl Access for S3Backend { ..Default::default() }); - am + am.into() } async fn stat(&self, path: &str, args: OpStat) -> Result { diff --git a/core/src/services/seafile/backend.rs b/core/src/services/seafile/backend.rs index ca6e3f381aa..18b9ace630c 100644 --- a/core/src/services/seafile/backend.rs +++ b/core/src/services/seafile/backend.rs @@ -262,7 +262,7 @@ impl Access for SeafileBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Seafile) .set_root(&self.core.root) @@ -281,7 +281,7 @@ impl Access for SeafileBackend { ..Default::default() }); - am + am.into() } async fn stat(&self, path: &str, _args: OpStat) -> Result { diff --git a/core/src/services/sftp/backend.rs b/core/src/services/sftp/backend.rs index 955a58e64c3..37691effd7e 100644 --- a/core/src/services/sftp/backend.rs +++ b/core/src/services/sftp/backend.rs @@ -21,6 +21,7 @@ use std::fmt::Formatter; use std::io::SeekFrom; use std::path::Path; use std::path::PathBuf; +use std::sync::Arc; use bb8::PooledConnection; use bb8::RunError; @@ -351,7 +352,7 @@ impl Access for SftpBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_root(self.root.as_str()) .set_scheme(Scheme::Sftp) @@ -375,7 +376,7 @@ impl Access for SftpBackend { ..Default::default() }); - am + am.into() } async fn create_dir(&self, path: &str, _: OpCreateDir) -> Result { diff --git a/core/src/services/supabase/backend.rs b/core/src/services/supabase/backend.rs index 7f79fa083aa..21ef418972c 100644 --- a/core/src/services/supabase/backend.rs +++ b/core/src/services/supabase/backend.rs @@ -163,7 +163,7 @@ impl Access for SupabaseBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Supabase) .set_root(&self.core.root) @@ -179,7 +179,7 @@ impl Access for SupabaseBackend { ..Default::default() }); - am + am.into() } async fn stat(&self, path: &str, _args: OpStat) -> Result { diff --git a/core/src/services/swift/backend.rs b/core/src/services/swift/backend.rs index d784f305faf..bdebfd4ba1c 100644 --- a/core/src/services/swift/backend.rs +++ b/core/src/services/swift/backend.rs @@ -193,7 +193,7 @@ impl Access for SwiftBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Swift) .set_root(&self.core.root) @@ -211,7 +211,7 @@ impl Access for SwiftBackend { ..Default::default() }); - am + am.into() } async fn stat(&self, path: &str, _args: OpStat) -> Result { diff --git a/core/src/services/upyun/backend.rs b/core/src/services/upyun/backend.rs index aaffb18e639..5359fef6097 100644 --- a/core/src/services/upyun/backend.rs +++ b/core/src/services/upyun/backend.rs @@ -239,7 +239,7 @@ impl Access for UpyunBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Upyun) .set_root(&self.core.root) @@ -270,7 +270,7 @@ impl Access for UpyunBackend { ..Default::default() }); - am + am.into() } async fn create_dir(&self, path: &str, _: OpCreateDir) -> Result { diff --git a/core/src/services/vercel_artifacts/backend.rs b/core/src/services/vercel_artifacts/backend.rs index 1967bab6719..d1f680e6f40 100644 --- a/core/src/services/vercel_artifacts/backend.rs +++ b/core/src/services/vercel_artifacts/backend.rs @@ -16,6 +16,7 @@ // under the License. use std::fmt::Debug; +use std::sync::Arc; use http::header; use http::Request; @@ -50,7 +51,7 @@ impl Access for VercelArtifactsBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut ma = AccessorInfo::default(); ma.set_scheme(Scheme::VercelArtifacts) .set_native_capability(Capability { @@ -63,7 +64,7 @@ impl Access for VercelArtifactsBackend { ..Default::default() }); - ma + ma.into() } async fn stat(&self, path: &str, _args: OpStat) -> Result { diff --git a/core/src/services/vercel_blob/backend.rs b/core/src/services/vercel_blob/backend.rs index 9edeb651ace..b8da7729c21 100644 --- a/core/src/services/vercel_blob/backend.rs +++ b/core/src/services/vercel_blob/backend.rs @@ -185,7 +185,7 @@ impl Access for VercelBlobBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::VercelBlob) .set_root(&self.core.root) @@ -208,7 +208,7 @@ impl Access for VercelBlobBackend { ..Default::default() }); - am + am.into() } async fn stat(&self, path: &str, _args: OpStat) -> Result { diff --git a/core/src/services/webdav/backend.rs b/core/src/services/webdav/backend.rs index 3d70ac813a6..f1f37694a05 100644 --- a/core/src/services/webdav/backend.rs +++ b/core/src/services/webdav/backend.rs @@ -243,7 +243,7 @@ impl Access for WebdavBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut ma = AccessorInfo::default(); ma.set_scheme(Scheme::Webdav) .set_root(&self.core.root) @@ -268,7 +268,7 @@ impl Access for WebdavBackend { ..Default::default() }); - ma + ma.into() } async fn create_dir(&self, path: &str, _: OpCreateDir) -> Result { diff --git a/core/src/services/webhdfs/backend.rs b/core/src/services/webhdfs/backend.rs index b2c35bcc7cc..2fa89ad8f67 100644 --- a/core/src/services/webhdfs/backend.rs +++ b/core/src/services/webhdfs/backend.rs @@ -17,6 +17,7 @@ use core::fmt::Debug; use std::collections::HashMap; +use std::sync::Arc; use bytes::Buf; use http::header::CONTENT_LENGTH; @@ -536,7 +537,7 @@ impl Access for WebhdfsBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::Webhdfs) .set_root(&self.root) @@ -556,7 +557,7 @@ impl Access for WebhdfsBackend { ..Default::default() }); - am + am.into() } /// Create a file or directory diff --git a/core/src/services/yandex_disk/backend.rs b/core/src/services/yandex_disk/backend.rs index f4d1a6fd0b3..a25d0a1926f 100644 --- a/core/src/services/yandex_disk/backend.rs +++ b/core/src/services/yandex_disk/backend.rs @@ -187,7 +187,7 @@ impl Access for YandexDiskBackend { type BlockingWriter = (); type BlockingLister = (); - fn info(&self) -> AccessorInfo { + fn info(&self) -> Arc { let mut am = AccessorInfo::default(); am.set_scheme(Scheme::YandexDisk) .set_root(&self.core.root) @@ -211,7 +211,7 @@ impl Access for YandexDiskBackend { ..Default::default() }); - am + am.into() } async fn create_dir(&self, path: &str, _: OpCreateDir) -> Result { diff --git a/core/src/types/operator/metadata.rs b/core/src/types/operator/metadata.rs index 397b5ef7e7e..b7114237b37 100644 --- a/core/src/types/operator/metadata.rs +++ b/core/src/types/operator/metadata.rs @@ -15,15 +15,17 @@ // specific language governing permissions and limitations // under the License. +use std::sync::Arc; + use crate::raw::*; use crate::*; /// Metadata for operator, users can use this metadata to get information of operator. #[derive(Clone, Debug, Default)] -pub struct OperatorInfo(AccessorInfo); +pub struct OperatorInfo(Arc); impl OperatorInfo { - pub(super) fn new(acc: AccessorInfo) -> Self { + pub(super) fn new(acc: Arc) -> Self { OperatorInfo(acc) }