about summary refs log tree commit diff
path: root/tvix/store/src/pathinfoservice/mod.rs
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2024-10-15T14·10+0300
committerclbot <clbot@tvl.fyi>2024-10-18T21·45+0000
commitbd6894d265738ca7463922d39cbc128c5dc0e6ec (patch)
tree6af2ed8ed6e6a3be7131c0fab4c6c20412aca4f2 /tvix/store/src/pathinfoservice/mod.rs
parent98df0e4e34683db103d1b258ed7449676f647dae (diff)
fix(tvix/store/pathinfo): use gRPC NarCalculationService r/8833
If the PathInfoService is using gRPC, expose it via the
nar_calculation_service() method in the PathInfoService.

Also pass nar_calculation_service through in tha blanket impl.

This now causes a `tvix-store import` using the default config to not
fall back to `SimpleRenderer`, which will calculate the NAR hash and
size by downloading the uploaded blobs (and blobs it didn't need to
upload) locally, making such imports faster.

Change-Id: If2c3fe6584e9093cba322d2360f355a3923904ae
Reviewed-on: https://cl.tvl.fyi/c/depot/+/12658
Tested-by: BuildkiteCI
Reviewed-by: edef <edef@edef.eu>
Autosubmit: flokli <flokli@flokli.de>
Diffstat (limited to 'tvix/store/src/pathinfoservice/mod.rs')
-rw-r--r--tvix/store/src/pathinfoservice/mod.rs6
1 files changed, 6 insertions, 0 deletions
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