feat(tvix/nar-bridge): make root_nodes_cache_capacity configurable

Allow this to be overridden via the CLI, also getting rid of the unsafe
because this doesn't need to be const anymore.

Change-Id: I5e51b52e42522a21f59ef69628b464477c0764d1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/12753
Tested-by: BuildkiteCI
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: Ilan Joselevich <personal@ilanjoselevich.com>
This commit is contained in:
Florian Klink 2024-11-09 16:00:23 +00:00 committed by clbot
parent 85de9b8dab
commit 0c5ad94914
2 changed files with 14 additions and 11 deletions

View file

@ -1,6 +1,7 @@
use clap::Parser;
use mimalloc::MiMalloc;
use nar_bridge::AppState;
use std::num::NonZeroUsize;
use tower::ServiceBuilder;
use tower_http::trace::{DefaultMakeSpan, TraceLayer};
use tracing::info;
@ -25,6 +26,11 @@ struct Cli {
#[clap(flatten)]
listen_args: tokio_listener::ListenerAddressLFlag,
/// The capacity of the lookup table from NarHash to [Node].
/// Should be bigger than the number of concurrent NAR uploads.
#[arg(long, env, default_value_t = NonZeroUsize::new(1000).unwrap())]
root_nodes_cache_capacity: NonZeroUsize,
#[cfg(feature = "otlp")]
/// Whether to configure OTLP. Set --otlp=false to disable.
#[arg(long, default_missing_value = "true", default_value = "true", num_args(0..=1), require_equals(true), action(clap::ArgAction::Set))]
@ -51,7 +57,12 @@ async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let (blob_service, directory_service, path_info_service, _nar_calculation_service) =
tvix_store::utils::construct_services(cli.service_addrs).await?;
let state = AppState::new(blob_service, directory_service, path_info_service);
let state = AppState::new(
blob_service,
directory_service,
path_info_service,
cli.root_nodes_cache_capacity,
);
let app = nar_bridge::gen_router(cli.priority)
.layer(