[package]
edition = "2021"
rust-version = "1.88"
name = "goosefs-sdk"
version = "0.2.2"
authors = ["Goosefs Team"]
build = "build.rs"
exclude = [
".idea/*",
".codebuddy/*",
".DS_Store",
"**/.DS_Store",
"docs/CLIENT_PAGE_CACHE_DESIGN.md",
"docs/GOOSEFS_LANCE_GRPC_DESIGN.md",
"docs/release/*",
"target/*",
"website/*",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Goosefs Rust gRPC Client - Direct gRPC client for Goosefs Master/Worker"
homepage = "https://tencent.github.io/tencent-goosefs-rust-sdk/"
documentation = "https://tencent.github.io/tencent-goosefs-rust-sdk/"
readme = "README.md"
keywords = [
"goosefs",
"grpc",
"storage",
"filesystem",
"cache",
]
categories = [
"network-programming",
"filesystem",
]
license = "Apache-2.0"
repository = "https://github.com/Tencent/tencent-goosefs-rust-sdk"
[features]
default = []
full-client = [
"metadata-cache",
"metrics-pushgateway",
"page-cache-io-uring",
]
metadata-cache = ["dep:lru"]
metrics-pushgateway = ["dep:reqwest"]
page-cache = [
"dep:foyer-common",
"dep:foyer-memory",
"tokio/fs",
]
page-cache-io-uring = [
"page-cache",
"dep:io-uring",
"dep:libc",
]
regen-proto = ["dep:tonic-prost-build"]
[lib]
name = "goosefs_sdk"
path = "src/lib.rs"
[[example]]
name = "async_persistence"
path = "examples/async_persistence.rs"
[[example]]
name = "async_read_trait"
path = "examples/async_read_trait.rs"
[[example]]
name = "auth_demo"
path = "examples/auth_demo.rs"
[[example]]
name = "cache_evictor_bench"
path = "benchmarks/cache_evictor_bench.rs"
required-features = ["page-cache"]
[[example]]
name = "cache_uring_bench"
path = "benchmarks/cache_uring_bench.rs"
required-features = ["page-cache-io-uring"]
[[example]]
name = "context_file_rw"
path = "examples/context_file_rw.rs"
[[example]]
name = "ha_multi_master"
path = "examples/ha_multi_master.rs"
[[example]]
name = "highlevel_file_rw"
path = "examples/highlevel_file_rw.rs"
[[example]]
name = "lowlevel_block_read"
path = "examples/lowlevel_block_read.rs"
[[example]]
name = "lowlevel_create_file"
path = "examples/lowlevel_create_file.rs"
[[example]]
name = "metadata_crud"
path = "examples/metadata_crud.rs"
[[example]]
name = "metrics_heartbeat"
path = "examples/metrics_heartbeat.rs"
[[example]]
name = "metrics_pushgateway"
path = "examples/metrics_pushgateway.rs"
required-features = ["metrics-pushgateway"]
[[example]]
name = "page_cache_demo"
path = "examples/page_cache_demo.rs"
required-features = ["page-cache"]
[[example]]
name = "partv_perf_verify"
path = "benchmarks/partv_perf_verify.rs"
[[example]]
name = "reader_page_cache_demo"
path = "examples/reader_page_cache_demo.rs"
required-features = ["page-cache"]
[[example]]
name = "repro_concurrent_write"
path = "benchmarks/repro_concurrent_write.rs"
[[example]]
name = "seekable_file_read"
path = "examples/seekable_file_read.rs"
[[example]]
name = "streaming_file_read"
path = "examples/streaming_file_read.rs"
[[example]]
name = "verify_checkblocks_locations"
path = "examples/verify_checkblocks_locations.rs"
[[example]]
name = "verify_java_hash_parity"
path = "examples/verify_java_hash_parity.rs"
[[example]]
name = "write_types"
path = "examples/write_types.rs"
[[test]]
name = "auth_retry"
path = "tests/auth_retry.rs"
[[test]]
name = "complete_file_crc_e2e"
path = "tests/complete_file_crc_e2e.rs"
[[test]]
name = "connection_reuse"
path = "tests/connection_reuse.rs"
[[test]]
name = "master_rename_no_replace"
path = "tests/master_rename_no_replace.rs"
[[test]]
name = "metadata_cache_e2e"
path = "tests/metadata_cache_e2e.rs"
required-features = ["metadata-cache"]
[[test]]
name = "metrics_heartbeat"
path = "tests/metrics_heartbeat.rs"
[[test]]
name = "opendal_sdk_api"
path = "tests/opendal_sdk_api.rs"
[[test]]
name = "page_cache_consistency"
path = "tests/page_cache_consistency.rs"
required-features = ["page-cache"]
[[test]]
name = "page_cache_e2e"
path = "tests/page_cache_e2e.rs"
required-features = ["page-cache"]
[[test]]
name = "ufs_stream_lifecycle_e2e"
path = "tests/ufs_stream_lifecycle_e2e.rs"
[[test]]
name = "write_degrade_e2e"
path = "tests/write_degrade_e2e.rs"
[[bench]]
name = "master_hotpath"
path = "benchmarks/master_hotpath.rs"
harness = false
[dependencies.arc-swap]
version = "1"
[dependencies.async-trait]
version = "0.1"
[dependencies.bytes]
version = "1.11.1"
[dependencies.dashmap]
version = "6"
[dependencies.fastrand]
version = "2"
[dependencies.foyer-common]
version = "0.22"
optional = true
[dependencies.foyer-memory]
version = "0.22"
optional = true
[dependencies.futures]
version = "0.3"
[dependencies.hostname]
version = "0.4"
[dependencies.itoa]
version = "1"
[dependencies.lru]
version = "0.16.4"
optional = true
[dependencies.prost]
version = "0.14.1"
[dependencies.rand]
version = "0.9.1"
[dependencies.reqwest]
version = "^0.12"
features = ["rustls-tls"]
optional = true
default-features = false
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.thiserror]
version = "2"
[dependencies.tokio]
version = "1.23"
features = [
"rt",
"macros",
"sync",
"time",
"io-util",
]
[dependencies.tokio-stream]
version = "0.1.14"
[dependencies.tonic]
version = "0.14"
features = [
"channel",
"codegen",
]
default-features = false
[dependencies.tonic-prost]
version = "0.14"
[dependencies.tracing]
version = "0.1"
[dependencies.uuid]
version = "1.2"
features = ["v4"]
[dependencies.xxhash-rust]
version = "0.8.15"
features = ["xxh3"]
[dev-dependencies.criterion]
version = "0.8"
features = ["cargo_bench_support"]
default-features = false
[dev-dependencies.tokio]
version = "1.23"
features = [
"full",
"test-util",
]
[build-dependencies.tonic-prost-build]
version = "0.14"
optional = true
[target.'cfg(target_os = "linux")'.dependencies.io-uring]
version = "0.7"
optional = true
[target."cfg(unix)".dependencies.libc]
version = "0.2"
optional = true
[profile.release]
lto = "fat"
codegen-units = 1
debug = 0
strip = true