From ca20d7cfb4418d750bbf0ee0b3a69ec7babad58b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Cumplido?= Date: Tue, 29 Sep 2026 12:12:49 +0200 Subject: [PATCH] GH-51632: [C++][CI] Link OpenTelemetry libs for parquet-arrow-reader-writer-tracing-test depending on System vs Bundled OpenTelemetry --- cpp/src/parquet/CMakeLists.txt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/cpp/src/parquet/CMakeLists.txt b/cpp/src/parquet/CMakeLists.txt index 077946e6cc42..5810317a9593 100644 --- a/cpp/src/parquet/CMakeLists.txt +++ b/cpp/src/parquet/CMakeLists.txt @@ -413,11 +413,20 @@ add_parquet_test(arrow-reader-writer-test arrow/variant_test.cc) if(ARROW_WITH_OPENTELEMETRY) + if(opentelemetry-cpp_SOURCE STREQUAL "SYSTEM") + # System OpenTelemetry is not bundled with libarrow. + # We need to link against it explicitly otherwise we get missing symbols. + set(EXTRA_TEST_LINK_LIBS ${ARROW_OPENTELEMETRY_LIBS}) + else() + # Bundled OpenTelemetry is statically linked into libarrow; linking it + # again duplicates globals and causes a double free at exit. + set(EXTRA_TEST_LINK_LIBS opentelemetry-cpp::sdk) + endif() add_parquet_test(arrow-reader-writer-tracing-test SOURCES arrow/arrow_reader_writer_tracing_test.cc EXTRA_LINK_LIBS - opentelemetry-cpp::sdk) + ${EXTRA_TEST_LINK_LIBS}) endif() add_parquet_test(arrow-index-test SOURCES arrow/index_test.cc)