diff options
author | Yureka <tvl@yuka.dev> | 2024-08-07T14·50+0200 |
---|---|---|
committer | yuka <tvl@yuka.dev> | 2024-10-10T12·53+0000 |
commit | 52bb3c6d025b2e1a2c2ec33fbb0e70f760b68253 (patch) | |
tree | 95c9625802bce157c77f25199078bdaaae020516 /tvix/store | |
parent | ba4e02c3ac1e5ff093268874e5dc684596e9f541 (diff) |
feat(tvix/composition): allow urls as anonymous stores r/8785
This allows specifying an url in place of a named reference to another composition entry, if the castore crate has been compiled with the xp-store-composition feature. Example: `--directory-service-addr cache://?near=memory://&far=memory://` This would be equivalent to the instantiation via toml file: ```toml [memory1] type = "memory" [memory2] type = "memory" [default] type = "cache" near = "memory1" far = "memory2" ``` Note that each anonymous url causes a distinct instance to be created. Change-Id: Iee5a07a94b063b5e767c704d9cad0114fa843164 Reviewed-on: https://cl.tvl.fyi/c/depot/+/12146 Reviewed-by: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/store')
-rw-r--r-- | tvix/store/Cargo.toml | 2 | ||||
-rw-r--r-- | tvix/store/src/pathinfoservice/from_addr.rs | 9 | ||||
-rw-r--r-- | tvix/store/src/utils.rs | 2 |
3 files changed, 8 insertions, 5 deletions
diff --git a/tvix/store/Cargo.toml b/tvix/store/Cargo.toml index 3dc816e4ba74..c19f34bbbcf0 100644 --- a/tvix/store/Cargo.toml +++ b/tvix/store/Cargo.toml @@ -73,7 +73,7 @@ otlp = ["tvix-tracing/otlp"] tonic-reflection = ["dep:tonic-reflection", "tvix-castore/tonic-reflection"] tracy = ["tvix-tracing/tracy"] virtiofs = ["tvix-castore/virtiofs"] -xp-store-composition = ["toml"] +xp-store-composition = ["toml", "tvix-castore/xp-store-composition"] # Whether to run the integration tests. # Requires the following packages in $PATH: # cbtemulator, google-cloud-bigtable-tool diff --git a/tvix/store/src/pathinfoservice/from_addr.rs b/tvix/store/src/pathinfoservice/from_addr.rs index b2e8b473934a..3dfb08c9e817 100644 --- a/tvix/store/src/pathinfoservice/from_addr.rs +++ b/tvix/store/src/pathinfoservice/from_addr.rs @@ -44,7 +44,10 @@ pub async fn from_addr( })? .0; let path_info_service = path_info_service_config - .build("anonymous", context.unwrap_or(&CompositionContext::blank())) + .build( + "anonymous", + context.unwrap_or(&CompositionContext::blank(®)), + ) .await?; Ok(path_info_service) @@ -53,7 +56,7 @@ pub async fn from_addr( #[cfg(test)] mod tests { use super::from_addr; - use crate::composition::{Composition, DeserializeWithRegistry, ServiceBuilder}; + use crate::composition::{Composition, DeserializeWithRegistry, ServiceBuilder, REG}; use lazy_static::lazy_static; use rstest::rstest; use tempfile::TempDir; @@ -125,7 +128,7 @@ mod tests { )] #[tokio::test] async fn test_from_addr_tokio(#[case] uri_str: &str, #[case] exp_succeed: bool) { - let mut comp = Composition::default(); + let mut comp = Composition::new(®); comp.extend(vec![( "default".into(), DeserializeWithRegistry(Box::new(MemoryBlobServiceConfig {}) diff --git a/tvix/store/src/utils.rs b/tvix/store/src/utils.rs index 1385ece39f8a..86ec367b66ad 100644 --- a/tvix/store/src/utils.rs +++ b/tvix/store/src/utils.rs @@ -188,7 +188,7 @@ pub async fn construct_services_from_configs( ), Box<dyn std::error::Error + Send + Sync>, > { - let mut comp = Composition::default(); + let mut comp = Composition::new(®); comp.extend(configs.blobservices); comp.extend(configs.directoryservices); |