Files
Kim Altintop 2b3aa5ae26 durability: Use async-channel to allow blocking send (#4802)
The previous approaches would either:

- panic when the queue becomes full, as `append_tx` is run inside the
context of a `LocalSet`, which is basically a glorified current thread
runtime
- deadlock because the receiver runtime has no way of notifiying the
sender of freed capacity in the channel

`async-channel` handles wait queues and notifications internally, so can
be used freely from either blocking or async contexts.

This _may_ come at different performance characteristics, but I haven't
measured them.

---------

Co-authored-by: joshua-spacetime <josh@clockworklabs.io>
2026-04-14 20:12:51 +00:00

36 lines
857 B
TOML

[package]
name = "spacetimedb-durability"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license-file = "LICENSE"
description = "Traits and single-node implementation of durability for SpacetimeDB."
[features]
test = []
fallocate = ["spacetimedb-commitlog/fallocate"]
[dependencies]
anyhow.workspace = true
async-channel.workspace = true
futures.workspace = true
itertools.workspace = true
log.workspace = true
scopeguard.workspace = true
spacetimedb-commitlog.workspace = true
spacetimedb-fs-utils.workspace = true
spacetimedb-paths.workspace = true
spacetimedb-sats.workspace = true
thiserror.workspace = true
tokio.workspace = true
tracing.workspace = true
[dev-dependencies]
spacetimedb-commitlog = { workspace = true, features = ["test"] }
tempfile.workspace = true
tokio.workspace = true
[lints]
workspace = true