diff options
-rw-r--r-- | tvix/store/src/pathinfoservice/grpc.rs | 9 | ||||
-rw-r--r-- | tvix/store/src/pathinfoservice/mod.rs | 6 |
2 files changed, 14 insertions, 1 deletions
diff --git a/tvix/store/src/pathinfoservice/grpc.rs b/tvix/store/src/pathinfoservice/grpc.rs index d292b2a784f6..453044cba13d 100644 --- a/tvix/store/src/pathinfoservice/grpc.rs +++ b/tvix/store/src/pathinfoservice/grpc.rs @@ -8,7 +8,7 @@ use futures::stream::BoxStream; use nix_compat::nixbase32; use std::sync::Arc; use tonic::{async_trait, Code}; -use tracing::{instrument, Span}; +use tracing::{instrument, warn, Span}; use tracing_indicatif::span_ext::IndicatifSpanExt; use tvix_castore::composition::{CompositionContext, ServiceBuilder}; use tvix_castore::Error; @@ -95,6 +95,13 @@ where Box::pin(stream) } + + #[instrument(level = "trace", skip_all)] + fn nar_calculation_service(&self) -> Option<Box<dyn NarCalculationService>> { + Some(Box::new(GRPCPathInfoService { + grpc_client: self.grpc_client.clone(), + }) as Box<dyn NarCalculationService>) + } } #[async_trait] diff --git a/tvix/store/src/pathinfoservice/mod.rs b/tvix/store/src/pathinfoservice/mod.rs index 0a91d6267260..a0c48f5cc9d5 100644 --- a/tvix/store/src/pathinfoservice/mod.rs +++ b/tvix/store/src/pathinfoservice/mod.rs @@ -62,6 +62,8 @@ pub trait PathInfoService: Send + Sync { /// [async_trait] generates, but for streams instead of futures. fn list(&self) -> BoxStream<'static, Result<PathInfo, Error>>; + /// Returns a (more) suitable NarCalculationService. + /// This can be used to offload NAR calculation to the remote side. fn nar_calculation_service(&self) -> Option<Box<dyn NarCalculationService>> { None } @@ -83,6 +85,10 @@ where fn list(&self) -> BoxStream<'static, Result<PathInfo, Error>> { self.as_ref().list() } + + fn nar_calculation_service(&self) -> Option<Box<dyn NarCalculationService>> { + self.as_ref().nar_calculation_service() + } } /// Registers the builtin PathInfoService implementations with the registry |