feat(tvix/store): add redb PathInfoService
This provides a PathInfoService implementation using redb (https://github.com/cberner/redb) as the underlying storage engine. Both an in-memory variant, as well as a filesystem one is provided, similar how it's done with the sled implementation. Supersedes: https://cl.tvl.fyi/c/depot/+/11692 Change-Id: I744619c51bf2efd0fb63659b12a27cbe0b2fd6fc Signed-off-by: Ilan Joselevich <personal@ilanjoselevich.com> Reviewed-on: https://cl.tvl.fyi/c/depot/+/11995 Reviewed-by: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
This commit is contained in:
parent
dbe698042d
commit
9f10a71ec5
10 changed files with 318 additions and 0 deletions
|
@ -40,6 +40,7 @@ petgraph = "0.6.4"
|
|||
erased-serde = "0.4.5"
|
||||
serde_tagged = "0.3.0"
|
||||
hyper-util = "0.1.6"
|
||||
redb = "2.1.1"
|
||||
|
||||
[dependencies.bigtable_rs]
|
||||
optional = true
|
||||
|
|
|
@ -33,6 +33,42 @@ impl From<crate::tonic::Error> for Error {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<redb::Error> for Error {
|
||||
fn from(value: redb::Error) -> Self {
|
||||
Error::StorageError(value.to_string())
|
||||
}
|
||||
}
|
||||
|
||||
impl From<redb::DatabaseError> for Error {
|
||||
fn from(value: redb::DatabaseError) -> Self {
|
||||
Error::StorageError(value.to_string())
|
||||
}
|
||||
}
|
||||
|
||||
impl From<redb::TableError> for Error {
|
||||
fn from(value: redb::TableError) -> Self {
|
||||
Error::StorageError(value.to_string())
|
||||
}
|
||||
}
|
||||
|
||||
impl From<redb::TransactionError> for Error {
|
||||
fn from(value: redb::TransactionError) -> Self {
|
||||
Error::StorageError(value.to_string())
|
||||
}
|
||||
}
|
||||
|
||||
impl From<redb::StorageError> for Error {
|
||||
fn from(value: redb::StorageError) -> Self {
|
||||
Error::StorageError(value.to_string())
|
||||
}
|
||||
}
|
||||
|
||||
impl From<redb::CommitError> for Error {
|
||||
fn from(value: redb::CommitError) -> Self {
|
||||
Error::StorageError(value.to_string())
|
||||
}
|
||||
}
|
||||
|
||||
impl From<std::io::Error> for Error {
|
||||
fn from(value: std::io::Error) -> Self {
|
||||
if value.kind() == std::io::ErrorKind::InvalidInput {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue