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 a2db7f2f1 feat(core): add new cap shared (#5328)
a2db7f2f1 is described below
commit a2db7f2f1bb4f8148a2ed31ecf1038988b103483
Author: TennyZhuang <[email protected]>
AuthorDate: Sat Nov 16 23:09:38 2024 +0800
feat(core): add new cap shared (#5328)
---
bindings/c/include/opendal.h | 4 ++++
bindings/c/src/operator_info.rs | 4 ++++
bindings/go/operator_info.go | 4 ++++
bindings/go/types.go | 2 ++
bindings/java/src/lib.rs | 3 ++-
bindings/java/src/main/java/org/apache/opendal/Capability.java | 9 ++++++++-
bindings/nodejs/generated.d.ts | 2 ++
bindings/nodejs/src/capability.rs | 6 ++++++
bindings/python/python/opendal/__init__.pyi | 1 +
bindings/python/src/capability.rs | 4 ++++
bindings/ruby/src/capability.rs | 3 ++-
core/src/raw/adapters/typed_kv/api.rs | 5 +++++
core/src/raw/adapters/typed_kv/backend.rs | 4 ++++
core/src/services/aliyun_drive/backend.rs | 2 +-
core/src/services/alluxio/backend.rs | 2 ++
core/src/services/atomicserver/backend.rs | 1 +
core/src/services/azblob/backend.rs | 2 ++
core/src/services/azdls/backend.rs | 2 ++
core/src/services/azfile/backend.rs | 2 ++
core/src/services/b2/backend.rs | 2 ++
core/src/services/cacache/backend.rs | 1 +
core/src/services/chainsafe/backend.rs | 2 ++
core/src/services/cloudflare_kv/backend.rs | 1 +
core/src/services/compfs/backend.rs | 2 ++
core/src/services/cos/backend.rs | 2 ++
core/src/services/d1/backend.rs | 1 +
core/src/services/dashmap/backend.rs | 1 +
core/src/services/dbfs/backend.rs | 2 ++
core/src/services/dropbox/backend.rs | 2 ++
core/src/services/etcd/backend.rs | 1 +
core/src/services/foundationdb/backend.rs | 1 +
core/src/services/fs/backend.rs | 2 ++
core/src/services/ftp/backend.rs | 2 ++
core/src/services/gcs/backend.rs | 2 ++
core/src/services/gdrive/backend.rs | 3 +++
core/src/services/ghac/backend.rs | 2 ++
core/src/services/github/backend.rs | 2 ++
core/src/services/gridfs/backend.rs | 1 +
core/src/services/hdfs/backend.rs | 2 ++
core/src/services/hdfs_native/backend.rs | 2 ++
core/src/services/http/backend.rs | 2 ++
core/src/services/huggingface/backend.rs | 2 ++
core/src/services/icloud/backend.rs | 1 +
core/src/services/ipfs/backend.rs | 2 ++
core/src/services/ipmfs/backend.rs | 2 ++
core/src/services/koofr/backend.rs | 2 ++
core/src/services/lakefs/backend.rs | 1 +
core/src/services/libsql/backend.rs | 1 +
core/src/services/memcached/backend.rs | 1 +
core/src/services/memory/backend.rs | 1 +
core/src/services/mini_moka/backend.rs | 1 +
core/src/services/moka/backend.rs | 1 +
core/src/services/mongodb/backend.rs | 1 +
core/src/services/monoiofs/backend.rs | 1 +
core/src/services/mysql/backend.rs | 1 +
core/src/services/nebula_graph/backend.rs | 1 +
core/src/services/obs/backend.rs | 2 ++
core/src/services/onedrive/backend.rs | 1 +
core/src/services/oss/backend.rs | 2 ++
core/src/services/pcloud/backend.rs | 2 ++
core/src/services/persy/backend.rs | 1 +
core/src/services/postgresql/backend.rs | 1 +
core/src/services/redb/backend.rs | 1 +
core/src/services/redis/backend.rs | 1 +
core/src/services/rocksdb/backend.rs | 1 +
core/src/services/s3/backend.rs | 2 ++
core/src/services/seafile/backend.rs | 2 ++
core/src/services/sftp/backend.rs | 2 ++
core/src/services/sled/backend.rs | 1 +
core/src/services/sqlite/backend.rs | 1 +
core/src/services/supabase/backend.rs | 2 ++
core/src/services/surrealdb/backend.rs | 1 +
core/src/services/swift/backend.rs | 2 ++
core/src/services/tikv/backend.rs | 1 +
core/src/services/upyun/backend.rs | 2 ++
core/src/services/vercel_artifacts/backend.rs | 2 ++
core/src/services/vercel_blob/backend.rs | 2 ++
core/src/services/webdav/backend.rs | 2 ++
core/src/services/webhdfs/backend.rs | 2 ++
core/src/services/yandex_disk/backend.rs | 2 ++
core/src/types/capability.rs | 6 ++++++
81 files changed, 159 insertions(+), 4 deletions(-)
diff --git a/bindings/c/include/opendal.h b/bindings/c/include/opendal.h
index 76f84f933..3560737dd 100644
--- a/bindings/c/include/opendal.h
+++ b/bindings/c/include/opendal.h
@@ -585,6 +585,10 @@ typedef struct opendal_capability {
* If it is not set, this will be zero
*/
uintptr_t batch_max_operations;
+ /**
+ * If operator supports shared.
+ */
+ bool shared;
/**
* If operator supports blocking.
*/
diff --git a/bindings/c/src/operator_info.rs b/bindings/c/src/operator_info.rs
index db96e99fe..e08becbc6 100644
--- a/bindings/c/src/operator_info.rs
+++ b/bindings/c/src/operator_info.rs
@@ -135,6 +135,9 @@ pub struct opendal_capability {
/// If it is not set, this will be zero
pub batch_max_operations: usize,
+ /// If operator supports shared.
+ pub shared: bool,
+
/// If operator supports blocking.
pub blocking: bool,
}
@@ -263,6 +266,7 @@ impl From<core::Capability> for opendal_capability {
batch: value.batch,
batch_delete: value.batch_delete,
batch_max_operations: value.batch_max_operations.unwrap_or(0),
+ shared: value.shared,
blocking: value.blocking,
}
}
diff --git a/bindings/go/operator_info.go b/bindings/go/operator_info.go
index d9264b6c8..70f5c1e55 100644
--- a/bindings/go/operator_info.go
+++ b/bindings/go/operator_info.go
@@ -240,6 +240,10 @@ func (c *Capability) BatchMaxOperations() uint {
return c.inner.batchMaxOperations
}
+func (c *Capability) Shared() bool {
+ return c.inner.shared == 1
+}
+
func (c *Capability) Blocking() bool {
return c.inner.blocking == 1
}
diff --git a/bindings/go/types.go b/bindings/go/types.go
index d5bd92495..79a4f3fa8 100644
--- a/bindings/go/types.go
+++ b/bindings/go/types.go
@@ -163,6 +163,7 @@ var (
&ffi.TypeUint8, // batch
&ffi.TypeUint8, // batch_delete
&ffi.TypePointer, // batch_max_operations
+ &ffi.TypeUint8, // shared
&ffi.TypeUint8, // blocking
nil,
}[0],
@@ -204,6 +205,7 @@ type opendalCapability struct {
batch uint8
batchDelete uint8
batchMaxOperations uint
+ shared uint8
blocking uint8
}
diff --git a/bindings/java/src/lib.rs b/bindings/java/src/lib.rs
index a9fef7e65..d19da1fb2 100644
--- a/bindings/java/src/lib.rs
+++ b/bindings/java/src/lib.rs
@@ -94,7 +94,7 @@ fn make_operator_info<'a>(env: &mut JNIEnv<'a>, info:
OperatorInfo) -> Result<JO
fn make_capability<'a>(env: &mut JNIEnv<'a>, cap: Capability) ->
Result<JObject<'a>> {
let capability = env.new_object(
"org/apache/opendal/Capability",
- "(ZZZZZZZZZZZZZZZJJZZZZZZZZZZZZZZJZ)V",
+ "(ZZZZZZZZZZZZZZZJJZZZZZZZZZZZZZZJZZ)V",
&[
JValue::Bool(cap.stat as jboolean),
JValue::Bool(cap.stat_with_if_match as jboolean),
@@ -128,6 +128,7 @@ fn make_capability<'a>(env: &mut JNIEnv<'a>, cap:
Capability) -> Result<JObject<
JValue::Bool(cap.batch as jboolean),
JValue::Bool(cap.batch_delete as jboolean),
JValue::Long(convert::usize_to_jlong(cap.batch_max_operations)),
+ JValue::Bool(cap.shared as jboolean),
JValue::Bool(cap.blocking as jboolean),
],
)?;
diff --git a/bindings/java/src/main/java/org/apache/opendal/Capability.java
b/bindings/java/src/main/java/org/apache/opendal/Capability.java
index 30404d636..9a7487ff8 100644
--- a/bindings/java/src/main/java/org/apache/opendal/Capability.java
+++ b/bindings/java/src/main/java/org/apache/opendal/Capability.java
@@ -185,6 +185,11 @@ public class Capability {
*/
public final long batchMaxOperations;
+ /**
+ * If operator supports shared.
+ */
+ public final boolean shared;
+
/**
* If operator supports blocking.
*/
@@ -223,7 +228,8 @@ public class Capability {
boolean batch,
boolean batchDelete,
long batchMaxOperations,
- boolean blocking) {
+ boolean blocking,
+ boolean shared) {
this.stat = stat;
this.statWithIfMatch = statWithIfMatch;
this.statWithIfNoneMatch = statWithIfNoneMatch;
@@ -257,5 +263,6 @@ public class Capability {
this.batchDelete = batchDelete;
this.batchMaxOperations = batchMaxOperations;
this.blocking = blocking;
+ this.shared = shared;
}
}
diff --git a/bindings/nodejs/generated.d.ts b/bindings/nodejs/generated.d.ts
index 7b5ade3c8..fb95a8b58 100644
--- a/bindings/nodejs/generated.d.ts
+++ b/bindings/nodejs/generated.d.ts
@@ -192,6 +192,8 @@ export class Capability {
get batchDelete(): boolean
/** The max operations that operator supports in batch. */
get batchMaxOperations(): bigint | null
+ /** If operator supports shared. */
+ get shared(): boolean
/** If operator supports blocking. */
get blocking(): boolean
}
diff --git a/bindings/nodejs/src/capability.rs
b/bindings/nodejs/src/capability.rs
index 66fcb5c64..f057b1779 100644
--- a/bindings/nodejs/src/capability.rs
+++ b/bindings/nodejs/src/capability.rs
@@ -245,6 +245,12 @@ impl Capability {
self.0.batch_max_operations
}
+ /// If operator supports shared.
+ #[napi(getter)]
+ pub fn shared(&self) -> bool {
+ self.0.shared
+ }
+
/// If operator supports blocking.
#[napi(getter)]
pub fn blocking(&self) -> bool {
diff --git a/bindings/python/python/opendal/__init__.pyi
b/bindings/python/python/opendal/__init__.pyi
index 2a2ae246b..418d8841a 100644
--- a/bindings/python/python/opendal/__init__.pyi
+++ b/bindings/python/python/opendal/__init__.pyi
@@ -204,4 +204,5 @@ class Capability:
batch_delete: bool
batch_max_operations: Optional[int]
+ shared: bool
blocking: bool
diff --git a/bindings/python/src/capability.rs
b/bindings/python/src/capability.rs
index 6cc76e153..ac424ba69 100644
--- a/bindings/python/src/capability.rs
+++ b/bindings/python/src/capability.rs
@@ -105,6 +105,9 @@ pub struct Capability {
/// The max operations that operator supports in batch.
pub batch_max_operations: Option<usize>,
+ /// If operator supports shared.
+ pub shared: bool,
+
/// If operator supports blocking.
pub blocking: bool,
}
@@ -147,6 +150,7 @@ impl Capability {
batch: capability.batch,
batch_delete: capability.batch_delete,
batch_max_operations: capability.batch_max_operations,
+ shared: capability.shared,
blocking: capability.blocking,
}
}
diff --git a/bindings/ruby/src/capability.rs b/bindings/ruby/src/capability.rs
index a2402dceb..32166bc0c 100644
--- a/bindings/ruby/src/capability.rs
+++ b/bindings/ruby/src/capability.rs
@@ -97,7 +97,8 @@ define_accessors!(Capability, {
batch: bool,
batch_delete: bool,
batch_max_operations: Option<usize>,
- blocking: bool
+ shared: bool,
+ blocking: bool,
});
// includes class into the Ruby module
diff --git a/core/src/raw/adapters/typed_kv/api.rs
b/core/src/raw/adapters/typed_kv/api.rs
index f1e4a95fc..a3d049084 100644
--- a/core/src/raw/adapters/typed_kv/api.rs
+++ b/core/src/raw/adapters/typed_kv/api.rs
@@ -130,6 +130,8 @@ pub struct Capability {
pub delete: bool,
/// If typed_kv operator supports scan natively.
pub scan: bool,
+ /// If typed_kv operator supports shared access.
+ pub shared: bool,
}
impl Debug for Capability {
@@ -148,6 +150,9 @@ impl Debug for Capability {
if self.scan {
s.push("Scan");
}
+ if self.shared {
+ s.push("Shared");
+ }
write!(f, "{{ {} }}", s.join(" | "))
}
diff --git a/core/src/raw/adapters/typed_kv/backend.rs
b/core/src/raw/adapters/typed_kv/backend.rs
index 59d10a47e..fca684772 100644
--- a/core/src/raw/adapters/typed_kv/backend.rs
+++ b/core/src/raw/adapters/typed_kv/backend.rs
@@ -87,6 +87,10 @@ impl<S: Adapter> Access for Backend<S> {
cap.list_with_recursive = true;
}
+ if kv_cap.shared {
+ cap.shared = true;
+ }
+
cap.blocking = true;
am.set_native_capability(cap);
diff --git a/core/src/services/aliyun_drive/backend.rs
b/core/src/services/aliyun_drive/backend.rs
index 95cf1b754..c9103cc14 100644
--- a/core/src/services/aliyun_drive/backend.rs
+++ b/core/src/services/aliyun_drive/backend.rs
@@ -230,7 +230,7 @@ impl Access for AliyunDriveBackend {
rename: true,
list: true,
list_with_limit: true,
-
+ shared: true,
..Default::default()
});
am.into()
diff --git a/core/src/services/alluxio/backend.rs
b/core/src/services/alluxio/backend.rs
index a5882c291..bea21a364 100644
--- a/core/src/services/alluxio/backend.rs
+++ b/core/src/services/alluxio/backend.rs
@@ -169,6 +169,8 @@ impl Access for AlluxioBackend {
list: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/atomicserver/backend.rs
b/core/src/services/atomicserver/backend.rs
index 546e6d259..5683cfea0 100644
--- a/core/src/services/atomicserver/backend.rs
+++ b/core/src/services/atomicserver/backend.rs
@@ -361,6 +361,7 @@ impl kv::Adapter for Adapter {
read: true,
write: true,
delete: true,
+ shared: true,
..Default::default()
},
)
diff --git a/core/src/services/azblob/backend.rs
b/core/src/services/azblob/backend.rs
index 820cfcec0..e2ab452dd 100644
--- a/core/src/services/azblob/backend.rs
+++ b/core/src/services/azblob/backend.rs
@@ -537,6 +537,8 @@ impl Access for AzblobBackend {
batch_delete: true,
batch_max_operations: Some(self.core.batch_max_operations),
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/azdls/backend.rs
b/core/src/services/azdls/backend.rs
index 534c7c190..8710077e3 100644
--- a/core/src/services/azdls/backend.rs
+++ b/core/src/services/azdls/backend.rs
@@ -242,6 +242,8 @@ impl Access for AzdlsBackend {
list: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/azfile/backend.rs
b/core/src/services/azfile/backend.rs
index 31ca40308..1f68439b5 100644
--- a/core/src/services/azfile/backend.rs
+++ b/core/src/services/azfile/backend.rs
@@ -253,6 +253,8 @@ impl Access for AzfileBackend {
list: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/b2/backend.rs b/core/src/services/b2/backend.rs
index 2e613a81f..b785af8bd 100644
--- a/core/src/services/b2/backend.rs
+++ b/core/src/services/b2/backend.rs
@@ -259,6 +259,8 @@ impl Access for B2Backend {
presign_write: true,
presign_stat: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/cacache/backend.rs
b/core/src/services/cacache/backend.rs
index 1ef193a68..71d4c3f83 100644
--- a/core/src/services/cacache/backend.rs
+++ b/core/src/services/cacache/backend.rs
@@ -96,6 +96,7 @@ impl kv::Adapter for Adapter {
write: true,
delete: true,
blocking: true,
+ shared: false,
..Default::default()
},
)
diff --git a/core/src/services/chainsafe/backend.rs
b/core/src/services/chainsafe/backend.rs
index 64832841f..e5373f4c3 100644
--- a/core/src/services/chainsafe/backend.rs
+++ b/core/src/services/chainsafe/backend.rs
@@ -187,6 +187,8 @@ impl Access for ChainsafeBackend {
list: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/cloudflare_kv/backend.rs
b/core/src/services/cloudflare_kv/backend.rs
index c2be1ddd1..5d4a65a4b 100644
--- a/core/src/services/cloudflare_kv/backend.rs
+++ b/core/src/services/cloudflare_kv/backend.rs
@@ -191,6 +191,7 @@ impl kv::Adapter for Adapter {
read: true,
write: true,
list: true,
+ shared: true,
..Default::default()
},
diff --git a/core/src/services/compfs/backend.rs
b/core/src/services/compfs/backend.rs
index f24fd54e5..9c43a82d4 100644
--- a/core/src/services/compfs/backend.rs
+++ b/core/src/services/compfs/backend.rs
@@ -130,6 +130,8 @@ impl Access for CompfsBackend {
copy: true,
rename: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/cos/backend.rs b/core/src/services/cos/backend.rs
index df297d196..1e27d7f6d 100644
--- a/core/src/services/cos/backend.rs
+++ b/core/src/services/cos/backend.rs
@@ -284,6 +284,8 @@ impl Access for CosBackend {
presign_read: true,
presign_write: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/d1/backend.rs b/core/src/services/d1/backend.rs
index 643617431..a86d47ab8 100644
--- a/core/src/services/d1/backend.rs
+++ b/core/src/services/d1/backend.rs
@@ -270,6 +270,7 @@ impl kv::Adapter for Adapter {
// Cloudflare D1 supports 1MB as max in write_total.
// refer to
https://developers.cloudflare.com/d1/platform/limits/
write_total_max_size: Some(1000 * 1000),
+ shared: true,
..Default::default()
},
)
diff --git a/core/src/services/dashmap/backend.rs
b/core/src/services/dashmap/backend.rs
index 1f4ea285e..09889b4a5 100644
--- a/core/src/services/dashmap/backend.rs
+++ b/core/src/services/dashmap/backend.rs
@@ -94,6 +94,7 @@ impl typed_kv::Adapter for Adapter {
set: true,
scan: true,
delete: true,
+ shared: false,
},
)
}
diff --git a/core/src/services/dbfs/backend.rs
b/core/src/services/dbfs/backend.rs
index ee2cc2ac0..f3ae33993 100644
--- a/core/src/services/dbfs/backend.rs
+++ b/core/src/services/dbfs/backend.rs
@@ -163,6 +163,8 @@ impl Access for DbfsBackend {
list: true,
+ shared: true,
+
..Default::default()
});
am.into()
diff --git a/core/src/services/dropbox/backend.rs
b/core/src/services/dropbox/backend.rs
index 9cc96b0dd..2544ac3ac 100644
--- a/core/src/services/dropbox/backend.rs
+++ b/core/src/services/dropbox/backend.rs
@@ -68,6 +68,8 @@ impl Access for DropboxBackend {
batch: true,
batch_delete: true,
+ shared: true,
+
..Default::default()
});
ma.into()
diff --git a/core/src/services/etcd/backend.rs
b/core/src/services/etcd/backend.rs
index 4a6e94f13..836590809 100644
--- a/core/src/services/etcd/backend.rs
+++ b/core/src/services/etcd/backend.rs
@@ -282,6 +282,7 @@ impl kv::Adapter for Adapter {
read: true,
write: true,
list: true,
+ shared: true,
..Default::default()
},
diff --git a/core/src/services/foundationdb/backend.rs
b/core/src/services/foundationdb/backend.rs
index b9c70946b..c72099cb1 100644
--- a/core/src/services/foundationdb/backend.rs
+++ b/core/src/services/foundationdb/backend.rs
@@ -120,6 +120,7 @@ impl kv::Adapter for Adapter {
read: true,
write: true,
delete: true,
+ shared: true,
..Default::default()
},
)
diff --git a/core/src/services/fs/backend.rs b/core/src/services/fs/backend.rs
index 2572361e3..ae3ad891d 100644
--- a/core/src/services/fs/backend.rs
+++ b/core/src/services/fs/backend.rs
@@ -191,6 +191,8 @@ impl Access for FsBackend {
rename: true,
blocking: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/ftp/backend.rs b/core/src/services/ftp/backend.rs
index 144ba9aff..85bb39468 100644
--- a/core/src/services/ftp/backend.rs
+++ b/core/src/services/ftp/backend.rs
@@ -281,6 +281,8 @@ impl Access for FtpBackend {
list: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/gcs/backend.rs b/core/src/services/gcs/backend.rs
index 5c35abf66..a2c7ed910 100644
--- a/core/src/services/gcs/backend.rs
+++ b/core/src/services/gcs/backend.rs
@@ -395,6 +395,8 @@ impl Access for GcsBackend {
presign_read: true,
presign_write: true,
+ shared: true,
+
..Default::default()
});
am.into()
diff --git a/core/src/services/gdrive/backend.rs
b/core/src/services/gdrive/backend.rs
index 09c51fd2c..9809d741f 100644
--- a/core/src/services/gdrive/backend.rs
+++ b/core/src/services/gdrive/backend.rs
@@ -64,6 +64,9 @@ impl Access for GdriveBackend {
delete: true,
rename: true,
copy: true,
+
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/ghac/backend.rs
b/core/src/services/ghac/backend.rs
index 1cd2bafd1..7035d6835 100644
--- a/core/src/services/ghac/backend.rs
+++ b/core/src/services/ghac/backend.rs
@@ -248,6 +248,8 @@ impl Access for GhacBackend {
write_can_multi: true,
delete: true,
+ shared: true,
+
..Default::default()
});
am.into()
diff --git a/core/src/services/github/backend.rs
b/core/src/services/github/backend.rs
index 23dfee60b..867879010 100644
--- a/core/src/services/github/backend.rs
+++ b/core/src/services/github/backend.rs
@@ -199,6 +199,8 @@ impl Access for GithubBackend {
list: true,
list_with_recursive: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/gridfs/backend.rs
b/core/src/services/gridfs/backend.rs
index f2bb23415..ad31fcc3c 100644
--- a/core/src/services/gridfs/backend.rs
+++ b/core/src/services/gridfs/backend.rs
@@ -221,6 +221,7 @@ impl kv::Adapter for Adapter {
Capability {
read: true,
write: true,
+ shared: true,
..Default::default()
},
)
diff --git a/core/src/services/hdfs/backend.rs
b/core/src/services/hdfs/backend.rs
index 4d87d24a1..403c78957 100644
--- a/core/src/services/hdfs/backend.rs
+++ b/core/src/services/hdfs/backend.rs
@@ -230,6 +230,8 @@ impl Access for HdfsBackend {
rename: true,
blocking: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/hdfs_native/backend.rs
b/core/src/services/hdfs_native/backend.rs
index 31ae8ed70..131d93f81 100644
--- a/core/src/services/hdfs_native/backend.rs
+++ b/core/src/services/hdfs_native/backend.rs
@@ -161,6 +161,8 @@ impl Access for HdfsNativeBackend {
rename: true,
blocking: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/http/backend.rs
b/core/src/services/http/backend.rs
index ff739014f..e6b913d93 100644
--- a/core/src/services/http/backend.rs
+++ b/core/src/services/http/backend.rs
@@ -218,6 +218,8 @@ impl Access for HttpBackend {
presign_read: !self.has_authorization(),
presign_stat: !self.has_authorization(),
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/huggingface/backend.rs
b/core/src/services/huggingface/backend.rs
index 2a893b4bc..f70bdd655 100644
--- a/core/src/services/huggingface/backend.rs
+++ b/core/src/services/huggingface/backend.rs
@@ -209,6 +209,8 @@ impl Access for HuggingfaceBackend {
list: true,
list_with_recursive: true,
+ shared: true,
+
..Default::default()
});
am.into()
diff --git a/core/src/services/icloud/backend.rs
b/core/src/services/icloud/backend.rs
index e0531fca3..270870360 100644
--- a/core/src/services/icloud/backend.rs
+++ b/core/src/services/icloud/backend.rs
@@ -239,6 +239,7 @@ impl Access for IcloudBackend {
.set_native_capability(Capability {
stat: true,
read: true,
+ shared: true,
..Default::default()
});
ma.into()
diff --git a/core/src/services/ipfs/backend.rs
b/core/src/services/ipfs/backend.rs
index a63afce88..5ef62a1e4 100644
--- a/core/src/services/ipfs/backend.rs
+++ b/core/src/services/ipfs/backend.rs
@@ -179,6 +179,8 @@ impl Access for IpfsBackend {
list: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/ipmfs/backend.rs
b/core/src/services/ipmfs/backend.rs
index 86cd6f949..97f6a0789 100644
--- a/core/src/services/ipmfs/backend.rs
+++ b/core/src/services/ipmfs/backend.rs
@@ -82,6 +82,8 @@ impl Access for IpmfsBackend {
list: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/koofr/backend.rs
b/core/src/services/koofr/backend.rs
index 59016ee71..948226c96 100644
--- a/core/src/services/koofr/backend.rs
+++ b/core/src/services/koofr/backend.rs
@@ -224,6 +224,8 @@ impl Access for KoofrBackend {
list: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/lakefs/backend.rs
b/core/src/services/lakefs/backend.rs
index dc913e252..d3086b378 100644
--- a/core/src/services/lakefs/backend.rs
+++ b/core/src/services/lakefs/backend.rs
@@ -211,6 +211,7 @@ impl Access for LakefsBackend {
write: true,
delete: true,
copy: true,
+ shared: true,
..Default::default()
});
am.into()
diff --git a/core/src/services/libsql/backend.rs
b/core/src/services/libsql/backend.rs
index 233580c78..1867d3bbb 100644
--- a/core/src/services/libsql/backend.rs
+++ b/core/src/services/libsql/backend.rs
@@ -315,6 +315,7 @@ impl kv::Adapter for Adapter {
read: true,
write: true,
delete: true,
+ shared: true,
..Default::default()
},
)
diff --git a/core/src/services/memcached/backend.rs
b/core/src/services/memcached/backend.rs
index 2b772f713..5ddfa4b9c 100644
--- a/core/src/services/memcached/backend.rs
+++ b/core/src/services/memcached/backend.rs
@@ -206,6 +206,7 @@ impl kv::Adapter for Adapter {
Capability {
read: true,
write: true,
+ shared: true,
..Default::default()
},
diff --git a/core/src/services/memory/backend.rs
b/core/src/services/memory/backend.rs
index e9b423889..a6475ab8a 100644
--- a/core/src/services/memory/backend.rs
+++ b/core/src/services/memory/backend.rs
@@ -84,6 +84,7 @@ impl typed_kv::Adapter for Adapter {
set: true,
delete: true,
scan: true,
+ shared: false,
},
)
}
diff --git a/core/src/services/mini_moka/backend.rs
b/core/src/services/mini_moka/backend.rs
index 1fed62b31..23587e1e3 100644
--- a/core/src/services/mini_moka/backend.rs
+++ b/core/src/services/mini_moka/backend.rs
@@ -143,6 +143,7 @@ impl typed_kv::Adapter for Adapter {
set: true,
delete: true,
scan: true,
+ shared: false,
},
)
}
diff --git a/core/src/services/moka/backend.rs
b/core/src/services/moka/backend.rs
index 4a2e34e5f..608bc902b 100644
--- a/core/src/services/moka/backend.rs
+++ b/core/src/services/moka/backend.rs
@@ -166,6 +166,7 @@ impl typed_kv::Adapter for Adapter {
set: true,
delete: true,
scan: true,
+ shared: false,
},
)
}
diff --git a/core/src/services/mongodb/backend.rs
b/core/src/services/mongodb/backend.rs
index ed5f26a41..a3edd88df 100644
--- a/core/src/services/mongodb/backend.rs
+++ b/core/src/services/mongodb/backend.rs
@@ -235,6 +235,7 @@ impl kv::Adapter for Adapter {
Capability {
read: true,
write: true,
+ shared: true,
..Default::default()
},
)
diff --git a/core/src/services/monoiofs/backend.rs
b/core/src/services/monoiofs/backend.rs
index 76f6880dc..8fc139386 100644
--- a/core/src/services/monoiofs/backend.rs
+++ b/core/src/services/monoiofs/backend.rs
@@ -121,6 +121,7 @@ impl Access for MonoiofsBackend {
rename: true,
create_dir: true,
copy: true,
+ shared: true,
..Default::default()
});
am.into()
diff --git a/core/src/services/mysql/backend.rs
b/core/src/services/mysql/backend.rs
index ada294d26..ad4ad4374 100644
--- a/core/src/services/mysql/backend.rs
+++ b/core/src/services/mysql/backend.rs
@@ -198,6 +198,7 @@ impl kv::Adapter for Adapter {
read: true,
write: true,
delete: true,
+ shared: true,
..Default::default()
},
)
diff --git a/core/src/services/nebula_graph/backend.rs
b/core/src/services/nebula_graph/backend.rs
index 4d70e3210..37275cf41 100644
--- a/core/src/services/nebula_graph/backend.rs
+++ b/core/src/services/nebula_graph/backend.rs
@@ -283,6 +283,7 @@ impl kv::Adapter for Adapter {
write_can_empty: true,
delete: true,
list: true,
+ shared: true,
..Default::default()
},
)
diff --git a/core/src/services/obs/backend.rs b/core/src/services/obs/backend.rs
index 3c4383134..82a41a192 100644
--- a/core/src/services/obs/backend.rs
+++ b/core/src/services/obs/backend.rs
@@ -291,6 +291,8 @@ impl Access for ObsBackend {
presign_read: true,
presign_write: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/onedrive/backend.rs
b/core/src/services/onedrive/backend.rs
index a89df094d..ca2b34c9a 100644
--- a/core/src/services/onedrive/backend.rs
+++ b/core/src/services/onedrive/backend.rs
@@ -80,6 +80,7 @@ impl Access for OnedriveBackend {
delete: true,
create_dir: true,
list: true,
+ shared: true,
..Default::default()
});
diff --git a/core/src/services/oss/backend.rs b/core/src/services/oss/backend.rs
index 1ed309e4e..47018795f 100644
--- a/core/src/services/oss/backend.rs
+++ b/core/src/services/oss/backend.rs
@@ -478,6 +478,8 @@ impl Access for OssBackend {
batch: true,
batch_max_operations: Some(self.core.batch_max_operations),
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/pcloud/backend.rs
b/core/src/services/pcloud/backend.rs
index a4ea74c3d..07078f8d2 100644
--- a/core/src/services/pcloud/backend.rs
+++ b/core/src/services/pcloud/backend.rs
@@ -213,6 +213,8 @@ impl Access for PcloudBackend {
list: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/persy/backend.rs
b/core/src/services/persy/backend.rs
index c9234f187..8ff8bad67 100644
--- a/core/src/services/persy/backend.rs
+++ b/core/src/services/persy/backend.rs
@@ -163,6 +163,7 @@ impl kv::Adapter for Adapter {
write: true,
delete: true,
blocking: true,
+ shared: false,
..Default::default()
},
)
diff --git a/core/src/services/postgresql/backend.rs
b/core/src/services/postgresql/backend.rs
index 72993c3af..ab4570909 100644
--- a/core/src/services/postgresql/backend.rs
+++ b/core/src/services/postgresql/backend.rs
@@ -196,6 +196,7 @@ impl kv::Adapter for Adapter {
Capability {
read: true,
write: true,
+ shared: true,
..Default::default()
},
)
diff --git a/core/src/services/redb/backend.rs
b/core/src/services/redb/backend.rs
index b0722f824..b8951ac18 100644
--- a/core/src/services/redb/backend.rs
+++ b/core/src/services/redb/backend.rs
@@ -121,6 +121,7 @@ impl kv::Adapter for Adapter {
read: true,
write: true,
blocking: true,
+ shared: false,
..Default::default()
},
)
diff --git a/core/src/services/redis/backend.rs
b/core/src/services/redis/backend.rs
index 19afe34c7..c9eb20426 100644
--- a/core/src/services/redis/backend.rs
+++ b/core/src/services/redis/backend.rs
@@ -336,6 +336,7 @@ impl kv::Adapter for Adapter {
Capability {
read: true,
write: true,
+ shared: true,
..Default::default()
},
diff --git a/core/src/services/rocksdb/backend.rs
b/core/src/services/rocksdb/backend.rs
index 8dc3c6d2a..3092bddef 100644
--- a/core/src/services/rocksdb/backend.rs
+++ b/core/src/services/rocksdb/backend.rs
@@ -119,6 +119,7 @@ impl kv::Adapter for Adapter {
write: true,
list: true,
blocking: true,
+ shared: false,
..Default::default()
},
)
diff --git a/core/src/services/s3/backend.rs b/core/src/services/s3/backend.rs
index 5b523fc72..65dca0f44 100644
--- a/core/src/services/s3/backend.rs
+++ b/core/src/services/s3/backend.rs
@@ -959,6 +959,8 @@ impl Access for S3Backend {
batch: true,
batch_max_operations: Some(self.core.batch_max_operations),
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/seafile/backend.rs
b/core/src/services/seafile/backend.rs
index fe7806913..77581a4d7 100644
--- a/core/src/services/seafile/backend.rs
+++ b/core/src/services/seafile/backend.rs
@@ -232,6 +232,8 @@ impl Access for SeafileBackend {
list: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/sftp/backend.rs
b/core/src/services/sftp/backend.rs
index 8e3c103f7..552845ba3 100644
--- a/core/src/services/sftp/backend.rs
+++ b/core/src/services/sftp/backend.rs
@@ -344,6 +344,8 @@ impl Access for SftpBackend {
copy: self.copyable,
rename: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/sled/backend.rs
b/core/src/services/sled/backend.rs
index 64c4c3675..308859945 100644
--- a/core/src/services/sled/backend.rs
+++ b/core/src/services/sled/backend.rs
@@ -148,6 +148,7 @@ impl kv::Adapter for Adapter {
write: true,
list: true,
blocking: true,
+ shared: false,
..Default::default()
},
)
diff --git a/core/src/services/sqlite/backend.rs
b/core/src/services/sqlite/backend.rs
index 6f9c1aa15..a6bfeb35d 100644
--- a/core/src/services/sqlite/backend.rs
+++ b/core/src/services/sqlite/backend.rs
@@ -233,6 +233,7 @@ impl kv::Adapter for Adapter {
write: true,
delete: true,
list: true,
+ shared: false,
..Default::default()
},
)
diff --git a/core/src/services/supabase/backend.rs
b/core/src/services/supabase/backend.rs
index c6923217d..623ec87b4 100644
--- a/core/src/services/supabase/backend.rs
+++ b/core/src/services/supabase/backend.rs
@@ -166,6 +166,8 @@ impl Access for SupabaseBackend {
write: true,
delete: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/surrealdb/backend.rs
b/core/src/services/surrealdb/backend.rs
index d7de77252..3026a9c4e 100644
--- a/core/src/services/surrealdb/backend.rs
+++ b/core/src/services/surrealdb/backend.rs
@@ -292,6 +292,7 @@ impl kv::Adapter for Adapter {
Capability {
read: true,
write: true,
+ shared: true,
..Default::default()
},
)
diff --git a/core/src/services/swift/backend.rs
b/core/src/services/swift/backend.rs
index a436eff22..adadbf46c 100644
--- a/core/src/services/swift/backend.rs
+++ b/core/src/services/swift/backend.rs
@@ -196,6 +196,8 @@ impl Access for SwiftBackend {
list: true,
list_with_recursive: true,
+ shared: true,
+
..Default::default()
});
am.into()
diff --git a/core/src/services/tikv/backend.rs
b/core/src/services/tikv/backend.rs
index 5d37b526d..e6f343943 100644
--- a/core/src/services/tikv/backend.rs
+++ b/core/src/services/tikv/backend.rs
@@ -195,6 +195,7 @@ impl kv::Adapter for Adapter {
read: true,
write: true,
blocking: false,
+ shared: true,
..Default::default()
},
)
diff --git a/core/src/services/upyun/backend.rs
b/core/src/services/upyun/backend.rs
index ae8e23765..36598d53f 100644
--- a/core/src/services/upyun/backend.rs
+++ b/core/src/services/upyun/backend.rs
@@ -223,6 +223,8 @@ impl Access for UpyunBackend {
list: true,
list_with_limit: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/vercel_artifacts/backend.rs
b/core/src/services/vercel_artifacts/backend.rs
index c56555988..923f9d3ba 100644
--- a/core/src/services/vercel_artifacts/backend.rs
+++ b/core/src/services/vercel_artifacts/backend.rs
@@ -61,6 +61,8 @@ impl Access for VercelArtifactsBackend {
write: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/vercel_blob/backend.rs
b/core/src/services/vercel_blob/backend.rs
index 0742e8463..635e7533b 100644
--- a/core/src/services/vercel_blob/backend.rs
+++ b/core/src/services/vercel_blob/backend.rs
@@ -171,6 +171,8 @@ impl Access for VercelBlobBackend {
list: true,
list_with_limit: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/webdav/backend.rs
b/core/src/services/webdav/backend.rs
index 7bf50888d..6fd4b8567 100644
--- a/core/src/services/webdav/backend.rs
+++ b/core/src/services/webdav/backend.rs
@@ -231,6 +231,8 @@ impl Access for WebdavBackend {
list: true,
// We already support recursive list but some details still
need to polish.
// list_with_recursive: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/services/webhdfs/backend.rs
b/core/src/services/webhdfs/backend.rs
index 660abc266..4149a6986 100644
--- a/core/src/services/webhdfs/backend.rs
+++ b/core/src/services/webhdfs/backend.rs
@@ -539,6 +539,8 @@ impl Access for WebhdfsBackend {
list: true,
+ shared: true,
+
..Default::default()
});
am.into()
diff --git a/core/src/services/yandex_disk/backend.rs
b/core/src/services/yandex_disk/backend.rs
index 230066c59..7dbd42b46 100644
--- a/core/src/services/yandex_disk/backend.rs
+++ b/core/src/services/yandex_disk/backend.rs
@@ -173,6 +173,8 @@ impl Access for YandexDiskBackend {
list: true,
list_with_limit: true,
+ shared: true,
+
..Default::default()
});
diff --git a/core/src/types/capability.rs b/core/src/types/capability.rs
index b30cbf880..b3a9e3af9 100644
--- a/core/src/types/capability.rs
+++ b/core/src/types/capability.rs
@@ -205,6 +205,9 @@ pub struct Capability {
/// Maximum number of operations supported in a single batch.
pub batch_max_operations: Option<usize>,
+ /// Indicate if the operator supports shared access.
+ pub shared: bool,
+
/// Indicates if blocking operations are supported.
pub blocking: bool,
}
@@ -224,6 +227,9 @@ impl Debug for Capability {
if self.presign {
f.write_str("| Presign")?;
}
+ if self.shared {
+ f.write_str("| Shared")?;
+ }
if self.blocking {
f.write_str("| Blocking")?;
}