From c36562ee92f4caa8987cd6e11b1aabdc77a21fb3 Mon Sep 17 00:00:00 2001 From: yuejiaointel Date: Thu, 22 Oct 2026 09:05:05 -0700 Subject: [PATCH] Keep debug_load_from_static last in DynamicVamana::assemble #407 added the logger argument after debug_load_from_static, and #417 copied that order to the stream overload, so callers that only want a logger had to pass the internal debug flag too. Move logger before debug_load_from_static in both overloads. The core auto_dynamic_assemble order is unchanged. --- bindings/c/src/dispatcher_dynamic_vamana.cpp | 2 -- bindings/python/src/dynamic_vamana.cpp | 8 +++++++- include/svs/orchestrators/dynamic_vamana.h | 20 ++++++++++---------- tests/svs/orchestrators/dynamic_vamana.cpp | 2 -- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/bindings/c/src/dispatcher_dynamic_vamana.cpp b/bindings/c/src/dispatcher_dynamic_vamana.cpp index ff1653b21..846667166 100644 --- a/bindings/c/src/dispatcher_dynamic_vamana.cpp +++ b/bindings/c/src/dispatcher_dynamic_vamana.cpp @@ -98,7 +98,6 @@ svs::DynamicVamana load_dynamic_vamana_index( std::move(data), std::move(D), std::move(pool), - /*debug_load_from_static=*/false, std::move(logger) ); } @@ -271,7 +270,6 @@ svs::DynamicVamana copy_dynamic_vamana_index( std::move(data), distance, std::move(pool), - /*debug_load_from_static=*/false, std::move(logger) ); } diff --git a/bindings/python/src/dynamic_vamana.cpp b/bindings/python/src/dynamic_vamana.cpp index 1b24eca1b..d4b6e5e7f 100644 --- a/bindings/python/src/dynamic_vamana.cpp +++ b/bindings/python/src/dynamic_vamana.cpp @@ -322,7 +322,13 @@ svs::DynamicVamana assemble_uncompressed( }); return svs::DynamicVamana::assemble( - config_path, load_graph, load_data, distance, num_threads, debug_load_from_static + config_path, + load_graph, + load_data, + distance, + num_threads, + svs::logging::get(), + debug_load_from_static ); } diff --git a/include/svs/orchestrators/dynamic_vamana.h b/include/svs/orchestrators/dynamic_vamana.h index 067c7c486..261278d7b 100644 --- a/include/svs/orchestrators/dynamic_vamana.h +++ b/include/svs/orchestrators/dynamic_vamana.h @@ -353,10 +353,10 @@ class DynamicVamana : public manager::IndexManager { /// @param data_loader An acceptable data loader or dataset. /// @param distance Distance functor or ``svs::DistanceType`` enum. /// @param threadpool_proto Thread pool or number of threads to use. - /// @param debug_load_from_static Internal/unstable: load files produced by the static - /// index using an identity ID translation. /// @param logger The logger to use for this index. Defaults to the global SVS logger /// (``svs::logging::get()``). + /// @param debug_load_from_static Internal/unstable: load files produced by the static + /// index using an identity ID translation. /// template < manager::QueryTypeDefinition QueryTypes, @@ -372,8 +372,8 @@ class DynamicVamana : public manager::IndexManager { DataLoader&& data_loader, const Distance& distance, ThreadPoolProto threadpool_proto, - bool debug_load_from_static = false, - svs::logging::logger_ptr logger = svs::logging::get() + svs::logging::logger_ptr logger = svs::logging::get(), + bool debug_load_from_static = false ) { return DynamicVamana( AssembleTag(), @@ -409,10 +409,10 @@ class DynamicVamana : public manager::IndexManager { /// @param data_loader The ``StreamLoader`` for the data to use. /// @param distance Distance functor or ``svs::DistanceType`` enum. /// @param threadpool_proto Thread pool or number of threads to use. - /// @param debug_load_from_static Internal/unstable: load files produced by the static - /// index using an identity ID translation. /// @param logger The logger to use for this index. Defaults to the global SVS logger /// (``svs::logging::get()``). + /// @param debug_load_from_static Internal/unstable: load files produced by the static + /// index using an identity ID translation. /// template < manager::QueryTypeDefinition QueryTypes, @@ -427,8 +427,8 @@ class DynamicVamana : public manager::IndexManager { const DataLoader& data_loader, const Distance& distance, ThreadPoolProto threadpool_proto, - bool debug_load_from_static = false, - svs::logging::logger_ptr logger = svs::logging::get() + svs::logging::logger_ptr logger = svs::logging::get(), + bool debug_load_from_static = false ) { using Graph = typename GraphLoader::return_type; using Data = typename DataLoader::return_type; @@ -495,8 +495,8 @@ class DynamicVamana : public manager::IndexManager { data_loader.load(data_path), distance, threads::as_threadpool(std::move(threadpool_proto)), - debug_load_from_static, - logger + logger, + debug_load_from_static ); } } diff --git a/tests/svs/orchestrators/dynamic_vamana.cpp b/tests/svs/orchestrators/dynamic_vamana.cpp index cb5f89844..77f08a469 100644 --- a/tests/svs/orchestrators/dynamic_vamana.cpp +++ b/tests/svs/orchestrators/dynamic_vamana.cpp @@ -279,14 +279,12 @@ CATCH_TEST_CASE("DynamicVamana Per-Index Logger", "[managers][dynamic_vamana][lo auto custom = CapturingLogger("custom_logger"); auto global_baseline = global.logger.use_count(); - // `debug_load_from_static` precedes the logger and must be passed explicitly. svs::DynamicVamana with_custom = svs::DynamicVamana::assemble( config_dir, svs::GraphLoader(graph_dir), svs::VectorDataLoader(data_dir), distance, num_threads, - false, custom.logger ); CATCH_REQUIRE(custom.logger.use_count() == 2);