about summary refs log tree commit diff
path: root/tvix/store/src/bin
diff options
context:
space:
mode:
Diffstat (limited to 'tvix/store/src/bin')
-rw-r--r--tvix/store/src/bin/tvix-store.rs45
1 files changed, 28 insertions, 17 deletions
diff --git a/tvix/store/src/bin/tvix-store.rs b/tvix/store/src/bin/tvix-store.rs
index c8d361212e5e..36969c1cd366 100644
--- a/tvix/store/src/bin/tvix-store.rs
+++ b/tvix/store/src/bin/tvix-store.rs
@@ -8,13 +8,10 @@ use std::sync::Arc;
 use tracing_subscriber::prelude::*;
 use tvix_store::blobservice;
 use tvix_store::directoryservice;
-use tvix_store::pathinfoservice::GRPCPathInfoService;
-use tvix_store::pathinfoservice::PathInfoService;
-use tvix_store::pathinfoservice::SledPathInfoService;
+use tvix_store::pathinfoservice;
 use tvix_store::proto::blob_service_server::BlobServiceServer;
 use tvix_store::proto::directory_service_server::DirectoryServiceServer;
 use tvix_store::proto::node::Node;
-use tvix_store::proto::path_info_service_client::PathInfoServiceClient;
 use tvix_store::proto::path_info_service_server::PathInfoServiceServer;
 use tvix_store::proto::GRPCBlobServiceWrapper;
 use tvix_store::proto::GRPCDirectoryServiceWrapper;
@@ -59,6 +56,9 @@ enum Commands {
             default_value = "sled:///var/lib/tvix-store/directories.sled"
         )]
         directory_service_addr: String,
+
+        #[arg(long, env, default_value = "sled:///var/lib/tvix-store/pathinfo.sled")]
+        path_info_service_addr: String,
     },
     /// Imports a list of paths into the store (not using the daemon)
     Import {
@@ -70,6 +70,9 @@ enum Commands {
 
         #[arg(long, env, default_value = "grpc+http://[::1]:8000")]
         directory_service_addr: String,
+
+        #[arg(long, env, default_value = "grpc+http://[::1]:8000")]
+        path_info_service_addr: String,
     },
     /// Mounts a tvix-store at the given mountpoint
     #[cfg(feature = "fuse")]
@@ -82,6 +85,9 @@ enum Commands {
 
         #[arg(long, env, default_value = "grpc+http://[::1]:8000")]
         directory_service_addr: String,
+
+        #[arg(long, env, default_value = "grpc+http://[::1]:8000")]
+        path_info_service_addr: String,
     },
 }
 
@@ -119,15 +125,16 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
             listen_address,
             blob_service_addr,
             directory_service_addr,
+            path_info_service_addr,
         } => {
             // initialize stores
             let blob_service = blobservice::from_addr(&blob_service_addr).await?;
             let directory_service = directoryservice::from_addr(&directory_service_addr)?;
-            let path_info_service: Arc<dyn PathInfoService> = Arc::new(SledPathInfoService::new(
-                "pathinfo.sled".into(),
+            let path_info_service = pathinfoservice::from_addr(
+                &path_info_service_addr,
                 blob_service.clone(),
                 directory_service.clone(),
-            )?);
+            )?;
 
             let listen_address = listen_address
                 .unwrap_or_else(|| "[::]:8000".to_string())
@@ -164,18 +171,20 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
             paths,
             blob_service_addr,
             directory_service_addr,
+            path_info_service_addr,
         } => {
             let blob_service = blobservice::from_addr(&blob_service_addr).await?;
             let directory_service = directoryservice::from_addr(&directory_service_addr)?;
-            let path_info_service_client =
-                PathInfoServiceClient::connect("http://[::1]:8000").await?;
-            let path_info_service =
-                GRPCPathInfoService::from_client(path_info_service_client.clone());
+            let path_info_service = pathinfoservice::from_addr(
+                &path_info_service_addr,
+                blob_service.clone(),
+                directory_service.clone(),
+            )?;
 
             let io = Arc::new(TvixStoreIO::new(
                 blob_service,
                 directory_service,
-                Arc::new(path_info_service),
+                path_info_service,
             ));
 
             let tasks = paths
@@ -200,16 +209,18 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
             dest,
             blob_service_addr,
             directory_service_addr,
+            path_info_service_addr,
         } => {
             let blob_service = blobservice::from_addr(&blob_service_addr).await?;
             let directory_service = directoryservice::from_addr(&directory_service_addr)?;
-            let path_info_service_client =
-                PathInfoServiceClient::connect("http://[::1]:8000").await?;
-            let path_info_service =
-                GRPCPathInfoService::from_client(path_info_service_client.clone());
+            let path_info_service = pathinfoservice::from_addr(
+                &path_info_service_addr,
+                blob_service.clone(),
+                directory_service.clone(),
+            )?;
 
             tokio::task::spawn_blocking(move || {
-                let f = FUSE::new(blob_service, directory_service, Arc::new(path_info_service));
+                let f = FUSE::new(blob_service, directory_service, path_info_service);
                 fuser::mount2(f, &dest, &[])
             })
             .await??