refactor(tvix/store): remove Arc<> from PathInfoService::from_addr
This makes PathInfoService::from_addr return a Box<dyn PathInfoService>, rather than an Arc<dyn …>, and leaves it up to the consumers to rewrap it into an Arc where needed. This allows us to drop the Arc for the tvix-store daemon subcommand. Change-Id: Ic83aa2ade6c51912281bd17c7eef7252e152b2d1 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10409 Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
This commit is contained in:
parent
93a228b9a4
commit
52cad86195
5 changed files with 37 additions and 24 deletions
|
|
@ -6,6 +6,7 @@ use nix_compat::store_path::StorePath;
|
|||
use std::io;
|
||||
use std::path::Path;
|
||||
use std::path::PathBuf;
|
||||
use std::sync::Arc;
|
||||
use tokio::task::JoinHandle;
|
||||
use tokio_listener::Listener;
|
||||
use tokio_listener::SystemOptions;
|
||||
|
|
@ -21,6 +22,7 @@ use tvix_castore::proto::GRPCBlobServiceWrapper;
|
|||
use tvix_castore::proto::GRPCDirectoryServiceWrapper;
|
||||
use tvix_castore::proto::NamedNode;
|
||||
use tvix_store::pathinfoservice;
|
||||
use tvix_store::pathinfoservice::PathInfoService;
|
||||
use tvix_store::proto::nar_info;
|
||||
use tvix_store::proto::path_info_service_server::PathInfoServiceServer;
|
||||
use tvix_store::proto::GRPCPathInfoServiceWrapper;
|
||||
|
|
@ -217,9 +219,9 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||
.add_service(DirectoryServiceServer::new(
|
||||
GRPCDirectoryServiceWrapper::from(directory_service),
|
||||
))
|
||||
.add_service(PathInfoServiceServer::new(
|
||||
GRPCPathInfoServiceWrapper::from(path_info_service),
|
||||
));
|
||||
.add_service(PathInfoServiceServer::new(GRPCPathInfoServiceWrapper::new(
|
||||
path_info_service,
|
||||
)));
|
||||
|
||||
#[cfg(feature = "tonic-reflection")]
|
||||
{
|
||||
|
|
@ -257,6 +259,9 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||
)
|
||||
.await?;
|
||||
|
||||
// Arc the PathInfoService, as we clone it .
|
||||
let path_info_service: Arc<dyn PathInfoService> = path_info_service.into();
|
||||
|
||||
let tasks = paths
|
||||
.into_iter()
|
||||
.map(|path| {
|
||||
|
|
@ -356,6 +361,9 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||
)
|
||||
.await?;
|
||||
|
||||
// Arc the PathInfoService, as TvixStoreFS requires Clone
|
||||
let path_info_service: Arc<dyn PathInfoService> = path_info_service.into();
|
||||
|
||||
let mut fuse_daemon = tokio::task::spawn_blocking(move || {
|
||||
let f = TvixStoreFs::new(
|
||||
blob_service,
|
||||
|
|
@ -397,6 +405,9 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||
)
|
||||
.await?;
|
||||
|
||||
// Arc the PathInfoService, as TvixStoreFS requires Clone
|
||||
let path_info_service: Arc<dyn PathInfoService> = path_info_service.into();
|
||||
|
||||
tokio::task::spawn_blocking(move || {
|
||||
let fs = TvixStoreFs::new(
|
||||
blob_service,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue