From e3fa1608508e2c18c1666fbb24af32b0dd01e99a Mon Sep 17 00:00:00 2001 From: yuejiaointel Date: Wed, 21 Oct 2026 22:14:43 -0700 Subject: [PATCH] [C API] Use the builder logger for stream loads Pass the index builder's logger to the Vamana and DynamicVamana stream assemble overloads instead of falling back to the global default logger. --- bindings/c/include/svs/c/svs_c.h | 2 +- bindings/c/src/dispatcher_dynamic_vamana.cpp | 11 +++++++---- bindings/c/src/dispatcher_dynamic_vamana.hpp | 3 ++- bindings/c/src/dispatcher_vamana.cpp | 10 ++++++---- bindings/c/src/dispatcher_vamana.hpp | 3 ++- bindings/c/src/index_builder.cpp | 6 ++++-- 6 files changed, 22 insertions(+), 13 deletions(-) diff --git a/bindings/c/include/svs/c/svs_c.h b/bindings/c/include/svs/c/svs_c.h index 7380d173..789086c0 100644 --- a/bindings/c/include/svs/c/svs_c.h +++ b/bindings/c/include/svs/c/svs_c.h @@ -1050,7 +1050,7 @@ SVS_API void svs_index_builder_free(svs_index_builder_h builder); /// @param out_err An optional error handle to capture errors /// @return true on success, false on failure /// @remarks Indexes keep the logger they were created with; the handle may be freed after -/// this call. Stream loads ignore it and use the global default logger. +/// this call. SVS_API bool svs_index_builder_set_logger( svs_index_builder_h builder, svs_logger_h logger, svs_error_h out_err /*=NULL*/ ); diff --git a/bindings/c/src/dispatcher_dynamic_vamana.cpp b/bindings/c/src/dispatcher_dynamic_vamana.cpp index ff1653b2..6d2d05d3 100644 --- a/bindings/c/src/dispatcher_dynamic_vamana.cpp +++ b/bindings/c/src/dispatcher_dynamic_vamana.cpp @@ -112,7 +112,7 @@ svs::DynamicVamana load_stream_dynamic_vamana_index( svs::threads::ThreadPoolHandle pool, const AllocatorBuilder& allocator_builder, const svs::data::BlockingParameters& block_params, - svs::logging::logger_ptr SVS_UNUSED(logger) + svs::logging::logger_ptr logger ) { using allocator_type = typename DataLoader::allocator_type; using value_type = typename allocator_type::value_type; @@ -131,7 +131,9 @@ svs::DynamicVamana load_stream_dynamic_vamana_index( svs::graphs::SimpleGraph>(graph_allocator), svs::make_stream_loader(allocator), distance, - std::move(pool) + std::move(pool), + /*debug_load_from_static=*/false, + std::move(logger) ); } @@ -385,7 +387,8 @@ svs::DynamicVamana dispatch_dynamic_vamana_index_load_stream( svs::DistanceType distance_type, svs::threads::ThreadPoolHandle pool, const AllocatorBuilder& allocator_builder, - const svs::data::BlockingParameters& block_params + const svs::data::BlockingParameters& block_params, + svs::logging::logger_ptr logger ) { return build_dynamic_vamana_index_dispatcher().invoke( build_params, @@ -395,7 +398,7 @@ svs::DynamicVamana dispatch_dynamic_vamana_index_load_stream( std::move(pool), allocator_builder, block_params, - nullptr + std::move(logger) ); } diff --git a/bindings/c/src/dispatcher_dynamic_vamana.hpp b/bindings/c/src/dispatcher_dynamic_vamana.hpp index ca3a382f..b89b6b4a 100644 --- a/bindings/c/src/dispatcher_dynamic_vamana.hpp +++ b/bindings/c/src/dispatcher_dynamic_vamana.hpp @@ -63,7 +63,8 @@ svs::DynamicVamana dispatch_dynamic_vamana_index_load_stream( svs::DistanceType distance_type, svs::threads::ThreadPoolHandle pool, const AllocatorBuilder& allocator_builder, - const svs::data::BlockingParameters& block_params + const svs::data::BlockingParameters& block_params, + svs::logging::logger_ptr logger ); svs::DynamicVamana dispatch_dynamic_vamana_index_copy( diff --git a/bindings/c/src/dispatcher_vamana.cpp b/bindings/c/src/dispatcher_vamana.cpp index 9cb72425..5d27d910 100644 --- a/bindings/c/src/dispatcher_vamana.cpp +++ b/bindings/c/src/dispatcher_vamana.cpp @@ -94,7 +94,7 @@ svs::Vamana load_stream_vamana_index( Distance distance, svs::threads::ThreadPoolHandle pool, const AllocatorBuilder& allocator_builder, - svs::logging::logger_ptr SVS_UNUSED(logger) + svs::logging::logger_ptr logger ) { using value_type = typename DataLoader::allocator_type::value_type; using data_type = typename DataLoader::data_type; @@ -108,7 +108,8 @@ svs::Vamana load_stream_vamana_index( svs::graphs::SimpleGraph>(graph_allocator), svs::make_stream_loader(data_allocator), distance, - std::move(pool) + std::move(pool), + std::move(logger) ); } @@ -341,7 +342,8 @@ svs::Vamana dispatch_vamana_index_load_stream( const Storage* storage, svs::DistanceType distance_type, svs::threads::ThreadPoolHandle pool, - const AllocatorBuilder& allocator_builder + const AllocatorBuilder& allocator_builder, + svs::logging::logger_ptr logger ) { return build_vamana_index_dispatcher().invoke( build_params, @@ -350,7 +352,7 @@ svs::Vamana dispatch_vamana_index_load_stream( distance_type, std::move(pool), allocator_builder, - nullptr + std::move(logger) ); } diff --git a/bindings/c/src/dispatcher_vamana.hpp b/bindings/c/src/dispatcher_vamana.hpp index 8c6416f5..a161e687 100644 --- a/bindings/c/src/dispatcher_vamana.hpp +++ b/bindings/c/src/dispatcher_vamana.hpp @@ -58,7 +58,8 @@ svs::Vamana dispatch_vamana_index_load_stream( const Storage* storage, svs::DistanceType distance_type, svs::threads::ThreadPoolHandle pool, - const AllocatorBuilder& allocator_builder + const AllocatorBuilder& allocator_builder, + svs::logging::logger_ptr logger ); svs::Vamana dispatch_vamana_index_copy( diff --git a/bindings/c/src/index_builder.cpp b/bindings/c/src/index_builder.cpp index 14db878d..1cb55eaa 100644 --- a/bindings/c/src/index_builder.cpp +++ b/bindings/c/src/index_builder.cpp @@ -102,7 +102,8 @@ std::shared_ptr IndexBuilder::load_stream(std::unique_ptr&& storage.get(), to_distance_type(distance_metric), pool_builder.build(), - allocator_builder + allocator_builder, + get_logger() ) ); @@ -305,7 +306,8 @@ std::shared_ptr IndexBuilder::load_stream_dynamic( to_distance_type(distance_metric), pool_builder.build(), allocator_builder, - block_params + block_params, + get_logger() ), sync_kind );