This is an automated email from the ASF dual-hosted git repository.
xuanwo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/opendal.git
The following commit(s) were added to refs/heads/main by this push:
new 9ef494d6df refactor(core)!: Return `Arc<AccessInfo>` for metadata
(#4883)
9ef494d6df is described below
commit 9ef494d6df2e9a13c4e5b9b03bcb36ec30c0a7c0
Author: Lzzzt <[email protected]>
AuthorDate: Fri Jul 12 20:12:17 2024 +0800
refactor(core)!: Return `Arc<AccessInfo>` for metadata (#4883)
* refactor: `Operator` add a field to store metadata and avoid calling
metadata
Signed-off-by: Lzzzt <[email protected]>
* refactor: change the signature of `Access::info`
Signed-off-by: Lzzzt <[email protected]>
refactor: change the signature of `Access::info` and `AccessDyn::info`
Signed-off-by: Lzzzt <[email protected]>
refactor: change the signature of `Access::info` and `AccessDyn::info`
Signed-off-by: Lzzzt <[email protected]>
revert: revert
Signed-off-by: Lzzzt <[email protected]>
revert: revert
Signed-off-by: Lzzzt <[email protected]>
Update store.rs
refactor: change the signature of `Access::info` and `AccessDyn::info`
Signed-off-by: Lzzzt <[email protected]>
---------
Signed-off-by: Lzzzt <[email protected]>
---
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 ca0480d45b..8a14ed4898 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 7293ced965..d3c04174e1 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<A: Access> LayeredAccess for BlockingAccessor<A> {
&self.inner
}
- fn metadata(&self) -> AccessorInfo {
- let mut meta = self.inner.info();
+ fn metadata(&self) -> Arc<AccessorInfo> {
+ 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<RpCreateDir> {
diff --git a/core/src/layers/complete.rs b/core/src/layers/complete.rs
index 68b0340aa7..d89aecb2cc 100644
--- a/core/src/layers/complete.rs
+++ b/core/src/layers/complete.rs
@@ -118,7 +118,7 @@ impl<A: Access> Layer<A> for CompleteLayer {
/// Provide complete wrapper for backend.
pub struct CompleteAccessor<A: Access> {
- meta: AccessorInfo,
+ meta: Arc<AccessorInfo>,
inner: Arc<A>,
}
@@ -380,13 +380,14 @@ impl<A: Access> LayeredAccess for CompleteAccessor<A> {
&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<A>
+ fn metadata(&self) -> Arc<AccessorInfo> {
+ 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<RpCreateDir> {
@@ -730,11 +731,11 @@ mod tests {
type BlockingWriter = oio::BlockingWriter;
type BlockingLister = oio::BlockingLister;
- fn info(&self) -> AccessorInfo {
+ fn info(&self) -> Arc<AccessorInfo> {
let mut info = AccessorInfo::default();
info.set_native_capability(self.capability);
- info
+ info.into()
}
async fn create_dir(&self, _: &str, _: OpCreateDir) ->
Result<RpCreateDir> {
diff --git a/core/src/layers/error_context.rs b/core/src/layers/error_context.rs
index cabe84b053..78ab14db3b 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<A: Access> Layer<A> for ErrorContextLayer {
/// Provide error context wrapper for backend.
pub struct ErrorContextAccessor<A: Access> {
- meta: AccessorInfo,
+ meta: Arc<AccessorInfo>,
inner: A,
}
@@ -79,7 +80,7 @@ impl<A: Access> LayeredAccess for ErrorContextAccessor<A> {
&self.inner
}
- fn metadata(&self) -> AccessorInfo {
+ fn metadata(&self) -> Arc<AccessorInfo> {
self.meta.clone()
}
diff --git a/core/src/layers/immutable_index.rs
b/core/src/layers/immutable_index.rs
index 14d2c8442f..1889878c97 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<A: Access> LayeredAccess for
ImmutableIndexAccessor<A> {
}
/// Add list capabilities for underlying storage services.
- fn metadata(&self) -> AccessorInfo {
- let mut meta = self.inner.info();
+ fn metadata(&self) -> Arc<AccessorInfo> {
+ 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 507745c6d1..ca45a80f13 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<A: Access> LayeredAccess for LoggingAccessor<A> {
&self.inner
}
- fn metadata(&self) -> AccessorInfo {
+ fn metadata(&self) -> Arc<AccessorInfo> {
debug!(
target: LOGGING_TARGET,
"service={} operation={} -> started",
diff --git a/core/src/layers/metrics.rs b/core/src/layers/metrics.rs
index decbad81a8..5dc220a123 100644
--- a/core/src/layers/metrics.rs
+++ b/core/src/layers/metrics.rs
@@ -414,7 +414,7 @@ impl<A: Access> LayeredAccess for MetricsAccessor<A> {
&self.inner
}
- fn metadata(&self) -> AccessorInfo {
+ fn metadata(&self) -> Arc<AccessorInfo> {
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 bca4a2e584..a06e9890fd 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<A: Access> LayeredAccess for MinitraceAccessor<A> {
}
#[trace]
- fn metadata(&self) -> AccessorInfo {
+ fn metadata(&self) -> Arc<AccessorInfo> {
self.inner.info()
}
diff --git a/core/src/layers/oteltrace.rs b/core/src/layers/oteltrace.rs
index b04ad22fdd..c03233d12f 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<A: Access> LayeredAccess for OtelTraceAccessor<A> {
&self.inner
}
- fn metadata(&self) -> AccessorInfo {
+ fn metadata(&self) -> Arc<AccessorInfo> {
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 4d42098394..af0fdc214d 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<AccessorInfo> {
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<RpStat> {
diff --git a/core/src/layers/timeout.rs b/core/src/layers/timeout.rs
index 1cbc0c5ac1..095d1044fd 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<AccessorInfo> {
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 4a2dc4bc00..ff5c4c79eb 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<A: Access> LayeredAccess for TracingAccessor<A> {
}
#[tracing::instrument(level = "debug")]
- fn metadata(&self) -> AccessorInfo {
+ fn metadata(&self) -> Arc<AccessorInfo> {
self.inner.info()
}
diff --git a/core/src/raw/accessor.rs b/core/src/raw/accessor.rs
index d2fed8f1f0..888dc4fa18 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<AccessorInfo>;
/// Invoke the `create` operation on the specified path
///
@@ -399,7 +399,7 @@ pub trait Access: Send + Sync + Debug + Unpin + 'static {
/// `Box<dyn AccessDyn>`.
pub trait AccessDyn: Send + Sync + Debug + Unpin {
/// Dyn version of [`Accessor::info`]
- fn info_dyn(&self) -> AccessorInfo;
+ fn info_dyn(&self) -> Arc<AccessorInfo>;
/// 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<AccessorInfo> {
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<AccessorInfo> {
self.info_dyn()
}
@@ -693,7 +693,7 @@ impl Access for () {
type BlockingWriter = ();
type BlockingLister = ();
- fn info(&self) -> AccessorInfo {
+ fn info(&self) -> Arc<AccessorInfo> {
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<T: Access + ?Sized> Access for Arc<T> {
type BlockingWriter = T::BlockingWriter;
type BlockingLister = T::BlockingLister;
- fn info(&self) -> AccessorInfo {
+ fn info(&self) -> Arc<AccessorInfo> {
self.as_ref().info()
}
diff --git a/core/src/raw/adapters/kv/backend.rs
b/core/src/raw/adapters/kv/backend.rs
index 625e7ea982..55de6b5c2c 100644
--- a/core/src/raw/adapters/kv/backend.rs
+++ b/core/src/raw/adapters/kv/backend.rs
@@ -64,7 +64,7 @@ impl<S: Adapter> Access for Backend<S> {
type Lister = HierarchyLister<KvLister>;
type BlockingLister = HierarchyLister<KvLister>;
- fn info(&self) -> AccessorInfo {
+ fn info(&self) -> Arc<AccessorInfo> {
let mut am: AccessorInfo = self.kv.metadata().into();
am.set_root(&self.root);
@@ -84,7 +84,7 @@ impl<S: Adapter> Access for Backend<S> {
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 fd6271691b..e65ac6f4e6 100644
--- a/core/src/raw/adapters/typed_kv/backend.rs
+++ b/core/src/raw/adapters/typed_kv/backend.rs
@@ -59,7 +59,7 @@ impl<S: Adapter> Access for Backend<S> {
type Lister = HierarchyLister<KvLister>;
type BlockingLister = HierarchyLister<KvLister>;
- fn info(&self) -> AccessorInfo {
+ fn info(&self) -> Arc<AccessorInfo> {
let kv_info = self.kv.info();
let mut am: AccessorInfo = AccessorInfo::default();
am.set_root(&self.root);
@@ -91,7 +91,7 @@ impl<S: Adapter> Access for Backend<S> {
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 aade6c3d34..f9872c6cf0 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<AccessorInfo> {
self.inner().info()
}
@@ -246,7 +247,7 @@ impl<L: LayeredAccess> Access for L {
type Lister = L::Lister;
type BlockingLister = L::BlockingLister;
- fn info(&self) -> AccessorInfo {
+ fn info(&self) -> Arc<AccessorInfo> {
(self as &L).metadata()
}
@@ -358,10 +359,10 @@ mod tests {
type Lister = ();
type BlockingLister = ();
- fn info(&self) -> AccessorInfo {
+ fn info(&self) -> Arc<AccessorInfo> {
let mut am = AccessorInfo::default();
am.set_scheme(Scheme::Custom("test"));
- am
+ am.into()
}
async fn delete(&self, _: &str, _: OpDelete) -> Result<RpDelete> {
diff --git a/core/src/raw/oio/list/flat_list.rs
b/core/src/raw/oio/list/flat_list.rs
index b310d534c0..a399539b9c 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<AccessorInfo> {
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 b04c50621e..7662d8f912 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<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/alluxio/backend.rs
b/core/src/services/alluxio/backend.rs
index 78cad123c4..018c138ed5 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<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/azblob/backend.rs
b/core/src/services/azblob/backend.rs
index feae2970e9..eb7c2f0241 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<AccessorInfo> {
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<RpStat> {
diff --git a/core/src/services/azdls/backend.rs
b/core/src/services/azdls/backend.rs
index 86975606a8..4774383c81 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<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/azfile/backend.rs
b/core/src/services/azfile/backend.rs
index 195483d1db..c47abf0ca5 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<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/b2/backend.rs b/core/src/services/b2/backend.rs
index ddf441057a..e210f3e654 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<AccessorInfo> {
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 03249ecf0a..a961ec35a9 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<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/compfs/backend.rs
b/core/src/services/compfs/backend.rs
index b69b55f66f..fb218b096e 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<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/cos/backend.rs b/core/src/services/cos/backend.rs
index 17b872bdb1..11478b0e8c 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<AccessorInfo> {
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<RpStat> {
diff --git a/core/src/services/dbfs/backend.rs
b/core/src/services/dbfs/backend.rs
index 925a1b0b50..5da63fe899 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<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/dropbox/backend.rs
b/core/src/services/dropbox/backend.rs
index 8097e6c179..f62b9e3d47 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<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/fs/backend.rs b/core/src/services/fs/backend.rs
index 344e2799bb..eb338bf559 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<std::fs::File>;
type BlockingLister = Option<FsLister<std::fs::ReadDir>>;
- fn info(&self) -> AccessorInfo {
+ fn info(&self) -> Arc<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/ftp/backend.rs b/core/src/services/ftp/backend.rs
index f5b4112e66..17c0fd5405 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<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/gcs/backend.rs b/core/src/services/gcs/backend.rs
index 5d19564054..ecc74a9731 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<AccessorInfo> {
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<RpStat> {
diff --git a/core/src/services/gdrive/backend.rs
b/core/src/services/gdrive/backend.rs
index fbf34c8255..082dd49b94 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<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/ghac/backend.rs
b/core/src/services/ghac/backend.rs
index a9d9550dc2..9b3932c15c 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<AccessorInfo> {
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 e46125f56a..714ed6c4fc 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<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/hdfs/backend.rs
b/core/src/services/hdfs/backend.rs
index f0caf134d1..f56353e9eb 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<hdrs::File>;
type BlockingLister = Option<HdfsLister>;
- fn info(&self) -> AccessorInfo {
+ fn info(&self) -> Arc<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/hdfs_native/backend.rs
b/core/src/services/hdfs_native/backend.rs
index 257518e000..fab3e56c1b 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<HdfsNativeLister>;
type BlockingLister = ();
- fn info(&self) -> AccessorInfo {
+ fn info(&self) -> Arc<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/http/backend.rs
b/core/src/services/http/backend.rs
index 6b2fce60f6..920a867345 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<AccessorInfo> {
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<RpStat> {
diff --git a/core/src/services/huggingface/backend.rs
b/core/src/services/huggingface/backend.rs
index 93c26d3017..c97befbae5 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<AccessorInfo> {
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<RpStat> {
diff --git a/core/src/services/icloud/backend.rs
b/core/src/services/icloud/backend.rs
index 6f56e8ae95..e7957b8dd9 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<AccessorInfo> {
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<RpStat> {
diff --git a/core/src/services/ipfs/backend.rs
b/core/src/services/ipfs/backend.rs
index fec0b37bb3..b1d1e67397 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<AccessorInfo> {
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 ae855d7b79..9ebef20e44 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<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/koofr/backend.rs
b/core/src/services/koofr/backend.rs
index 71781b1366..98008187e8 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<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/monoiofs/backend.rs
b/core/src/services/monoiofs/backend.rs
index f68fd6b8fa..b7c85e8808 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<AccessorInfo> {
todo!()
}
}
diff --git a/core/src/services/obs/backend.rs b/core/src/services/obs/backend.rs
index 8f21522329..09e68c235b 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<AccessorInfo> {
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<RpStat> {
diff --git a/core/src/services/onedrive/backend.rs
b/core/src/services/onedrive/backend.rs
index 9ba74b5bbc..b28f25f6a5 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<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/oss/backend.rs b/core/src/services/oss/backend.rs
index 319fd397e0..b2679f1b2a 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<AccessorInfo> {
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<RpStat> {
diff --git a/core/src/services/pcloud/backend.rs
b/core/src/services/pcloud/backend.rs
index 071925cbd9..688230aa10 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<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/s3/backend.rs b/core/src/services/s3/backend.rs
index ab255ff892..b2d7c9ca07 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<AccessorInfo> {
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<RpStat> {
diff --git a/core/src/services/seafile/backend.rs
b/core/src/services/seafile/backend.rs
index ca6e3f381a..18b9ace630 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<AccessorInfo> {
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<RpStat> {
diff --git a/core/src/services/sftp/backend.rs
b/core/src/services/sftp/backend.rs
index 955a58e64c..37691effd7 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<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/supabase/backend.rs
b/core/src/services/supabase/backend.rs
index 7f79fa083a..21ef418972 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<AccessorInfo> {
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<RpStat> {
diff --git a/core/src/services/swift/backend.rs
b/core/src/services/swift/backend.rs
index d784f305fa..bdebfd4ba1 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<AccessorInfo> {
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<RpStat> {
diff --git a/core/src/services/upyun/backend.rs
b/core/src/services/upyun/backend.rs
index aaffb18e63..5359fef609 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<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/vercel_artifacts/backend.rs
b/core/src/services/vercel_artifacts/backend.rs
index 1967bab671..d1f680e6f4 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<AccessorInfo> {
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<RpStat> {
diff --git a/core/src/services/vercel_blob/backend.rs
b/core/src/services/vercel_blob/backend.rs
index 9edeb651ac..b8da7729c2 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<AccessorInfo> {
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<RpStat> {
diff --git a/core/src/services/webdav/backend.rs
b/core/src/services/webdav/backend.rs
index 3d70ac813a..f1f37694a0 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<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/services/webhdfs/backend.rs
b/core/src/services/webhdfs/backend.rs
index b2c35bcc7c..2fa89ad8f6 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<AccessorInfo> {
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 f4d1a6fd0b..a25d0a1926 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<AccessorInfo> {
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<RpCreateDir> {
diff --git a/core/src/types/operator/metadata.rs
b/core/src/types/operator/metadata.rs
index 397b5ef7e7..b7114237b3 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<AccessorInfo>);
impl OperatorInfo {
- pub(super) fn new(acc: AccessorInfo) -> Self {
+ pub(super) fn new(acc: Arc<AccessorInfo>) -> Self {
OperatorInfo(acc)
}