0
0
mirror of https://github.com/tursodatabase/libsql.git synced 2024-12-15 17:59:41 +00:00
libsql/libsql-wal/Cargo.toml
ad hoc 06bb81bbb1
libsql wal s3 backend (#1554)
* introduce checkpointer

* fmt

* impl IoBuf(Mut) for BytesMut

* add tokio_util dep

* implement FileStreamBody

wrapper stream arounf File, to send as payload to s3

* introduce SegmentKey

* add copy stream to FileExt compat method

* add warning comment

* fix imports

* add read_at and read_at_async methods

* update Backend trait to return segmetn index

* introduce S3Backend

* add s3 keys formatters

* implement Backend for S3Backend

* fix imports

* remove old implementation

* add basic s3 test

* remove unused implementation of FileExt for Vec<u8>

* add net abstraction

* feature gate s3 backend

* s3 backend with custom connector

* fmt

* expose WalRegistry::get_async

* expose seal_current method

* implement get_durable_frame_no

* expose convenient constructor for AsyncStorage

* implement Clone for LibsqlWalManager

* pass config to Storage methods

* add unhandled storage variant

* cargo bucket already exist error

* return optional segment

* remove net abstraction

the connector can be passed to the SdkConfig

* add basic shell to interact with libsql-wal

* fmt

* do not publish libsql wal
2024-07-17 08:17:21 +00:00

84 lines
2.3 KiB
TOML

[package]
name = "libsql-wal"
version = "0.1.0"
edition = "2021"
publish = false
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
arc-swap = "1.7.1"
async-stream = "0.3.5"
bitflags = "2.5.0"
bytes = "1.6.0"
chrono = "0.4.38"
crc32fast = "1.4.2"
crossbeam = "0.8.4"
crossbeam-skiplist = "0.1.3"
fst = "0.4.7"
hashbrown = "0.14.3"
libsql-sys = { path = "../libsql-sys", features = ["rusqlite"] }
nix = { version = "0.28.0", features = ["uio", "fs"] }
parking_lot = { version = "0.12.3", features = ["arc_lock"] }
priority-queue = "2.0.2"
roaring = "0.10.5"
tempfile = "3.10.1"
thiserror = "1.0.58"
tokio = { version = "1", features = ["full"] }
tokio-stream = "0.1.15"
tracing = "0.1.40"
uuid = { version = "1.8.0", features = ["v4"] }
walkdir = "2.5.0"
zerocopy = { version = "0.7.32", features = ["derive", "alloc"] }
aws-config = { version = "1", optional = true, features = ["behavior-version-latest"] }
aws-sdk-s3 = { version = "1", optional = true }
http-body = "1.0.0"
tokio-util = "0.7.11"
hyper = { workspace = true, optional = true, features = ["client", "http2"] }
aws-smithy-runtime = { version = "1.6.2", optional = true, features = ["connector-hyper-0-14-x", "client"]}
clap = { version = "4.5.9", optional = true, features = ["derive"] }
inquire = { version = "0.7.5", optional = true }
tracing-subscriber = { version = "0.3.18", optional = true }
aws-credential-types = { version = "1.2.0", optional = true }
[dev-dependencies]
criterion = "0.5.1"
hex = "0.4.3"
insta = "1.39.0"
once_cell = "1.19.0"
rand = "0.8.5"
rand_chacha = "0.3.1"
regex = "1.10.4"
s3s = { git = "https://github.com/Nugine/s3s" }
s3s-fs = { git = "https://github.com/Nugine/s3s" }
s3s-aws = { git = "https://github.com/Nugine/s3s" }
tracing-subscriber = "0.3"
aws-credential-types = { version = "1", features = ["test-util"] }
tokio = { version = "*", features = ["test-util"] }
[[bench]]
name = "benchmarks"
harness = false
[features]
default = ["s3", "shell-bin"]
s3 = [
"dep:hyper",
"dep:aws-smithy-runtime",
"dep:aws-sdk-s3",
"dep:aws-config",
"dep:aws-credential-types",
]
shell-bin = [
"dep:clap",
"dep:inquire",
"s3",
"dep:tracing-subscriber",
]
[[bin]]
name = "shell"
path = "src/bins/shell/main.rs"
required-features = ["shell-bin"]