From bb7c76739a30d2f312693799d8237eb0eb2da28d Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Fri, 9 Jun 2023 23:35:46 +0300 Subject: feat(tvix/store/directorysvc): add from_addr Add --directory-service-addr arg to tvix-store CLI. Change-Id: Iea1e6f08f27f7157b21ccf397297c68358bd78a0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8743 Tested-by: BuildkiteCI Autosubmit: flokli Reviewed-by: tazjin --- tvix/store/src/bin/tvix-store.rs | 42 +++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 20 deletions(-) (limited to 'tvix/store/src/bin') diff --git a/tvix/store/src/bin/tvix-store.rs b/tvix/store/src/bin/tvix-store.rs index 6e2424a7e5..c8d361212e 100644 --- a/tvix/store/src/bin/tvix-store.rs +++ b/tvix/store/src/bin/tvix-store.rs @@ -7,14 +7,11 @@ use std::path::PathBuf; use std::sync::Arc; use tracing_subscriber::prelude::*; use tvix_store::blobservice; -use tvix_store::directoryservice::DirectoryService; -use tvix_store::directoryservice::GRPCDirectoryService; -use tvix_store::directoryservice::SledDirectoryService; +use tvix_store::directoryservice; use tvix_store::pathinfoservice::GRPCPathInfoService; use tvix_store::pathinfoservice::PathInfoService; use tvix_store::pathinfoservice::SledPathInfoService; use tvix_store::proto::blob_service_server::BlobServiceServer; -use tvix_store::proto::directory_service_client::DirectoryServiceClient; use tvix_store::proto::directory_service_server::DirectoryServiceServer; use tvix_store::proto::node::Node; use tvix_store::proto::path_info_service_client::PathInfoServiceClient; @@ -55,6 +52,13 @@ enum Commands { #[arg(long, env, default_value = "sled:///var/lib/tvix-store/blobs.sled")] blob_service_addr: String, + + #[arg( + long, + env, + default_value = "sled:///var/lib/tvix-store/directories.sled" + )] + directory_service_addr: String, }, /// Imports a list of paths into the store (not using the daemon) Import { @@ -63,6 +67,9 @@ enum Commands { #[arg(long, env, default_value = "grpc+http://[::1]:8000")] blob_service_addr: String, + + #[arg(long, env, default_value = "grpc+http://[::1]:8000")] + directory_service_addr: String, }, /// Mounts a tvix-store at the given mountpoint #[cfg(feature = "fuse")] @@ -72,6 +79,9 @@ enum Commands { #[arg(long, env, default_value = "grpc+http://[::1]:8000")] blob_service_addr: String, + + #[arg(long, env, default_value = "grpc+http://[::1]:8000")] + directory_service_addr: String, }, } @@ -108,11 +118,11 @@ async fn main() -> Result<(), Box> { Commands::Daemon { listen_address, blob_service_addr, + directory_service_addr, } => { // initialize stores let blob_service = blobservice::from_addr(&blob_service_addr).await?; - let directory_service: Arc = - Arc::new(SledDirectoryService::new("directories.sled".into())?); + let directory_service = directoryservice::from_addr(&directory_service_addr)?; let path_info_service: Arc = Arc::new(SledPathInfoService::new( "pathinfo.sled".into(), blob_service.clone(), @@ -153,12 +163,10 @@ async fn main() -> Result<(), Box> { Commands::Import { paths, blob_service_addr, + directory_service_addr, } => { let blob_service = blobservice::from_addr(&blob_service_addr).await?; - - let directory_service = GRPCDirectoryService::from_client( - DirectoryServiceClient::connect("http://[::1]:8000").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 = @@ -166,7 +174,7 @@ async fn main() -> Result<(), Box> { let io = Arc::new(TvixStoreIO::new( blob_service, - Arc::new(directory_service), + directory_service, Arc::new(path_info_service), )); @@ -191,23 +199,17 @@ async fn main() -> Result<(), Box> { Commands::Mount { dest, blob_service_addr, + directory_service_addr, } => { let blob_service = blobservice::from_addr(&blob_service_addr).await?; - - let directory_service = GRPCDirectoryService::from_client( - DirectoryServiceClient::connect("http://[::1]:8000").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()); tokio::task::spawn_blocking(move || { - let f = FUSE::new( - blob_service, - Arc::new(directory_service), - Arc::new(path_info_service), - ); + let f = FUSE::new(blob_service, directory_service, Arc::new(path_info_service)); fuser::mount2(f, &dest, &[]) }) .await?? -- cgit 1.4.1