Skip to content

Commit dc84232

Browse files
authored
GH-43296: [C++][FlightRPC] Remove Flight UCX transport (#43297)
### Rationale for this change This was experimental and we should not encourage it's use. ### What changes are included in this PR? Removal of UCX transport for Flight ### Are these changes tested? Via CI ### Are there any user-facing changes? Yes, we do remove UCX as a possible transport for Flight. If users want something similar we should encourage the [Dissassociated IPC protocol implementation](https://arrow.apache.org/docs/dev/format/DissociatedIPC.html) * GitHub Issue: #43296 Authored-by: Raúl Cumplido <[email protected]> Signed-off-by: Sutou Kouhei <[email protected]>
1 parent ac1f05f commit dc84232

21 files changed

+6
-4011
lines changed

ci/docker/conda-cpp.dockerfile

-2
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ RUN mamba install -q -y \
3737
doxygen \
3838
libnuma \
3939
python=${python} \
40-
ucx \
41-
ucx-proc=*=cpu \
4240
valgrind && \
4341
mamba clean --all
4442

ci/scripts/cpp_build.sh

-1
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,6 @@ else
215215
-DARROW_WITH_OPENTELEMETRY=${ARROW_WITH_OPENTELEMETRY:-OFF} \
216216
-DARROW_WITH_MUSL=${ARROW_WITH_MUSL:-OFF} \
217217
-DARROW_WITH_SNAPPY=${ARROW_WITH_SNAPPY:-OFF} \
218-
-DARROW_WITH_UCX=${ARROW_WITH_UCX:-OFF} \
219218
-DARROW_WITH_UTF8PROC=${ARROW_WITH_UTF8PROC:-ON} \
220219
-DARROW_WITH_ZLIB=${ARROW_WITH_ZLIB:-OFF} \
221220
-DARROW_WITH_ZSTD=${ARROW_WITH_ZSTD:-OFF} \

cpp/cmake_modules/DefineOptions.cmake

-4
Original file line numberDiff line numberDiff line change
@@ -539,10 +539,6 @@ takes precedence over ccache if a storage backend is configured" ON)
539539
define_option(ARROW_WITH_ZLIB "Build with zlib compression" OFF)
540540
define_option(ARROW_WITH_ZSTD "Build with zstd compression" OFF)
541541

542-
define_option(ARROW_WITH_UCX
543-
"Build with UCX transport for Arrow Flight;(only used if ARROW_FLIGHT is ON)"
544-
OFF)
545-
546542
define_option(ARROW_WITH_UTF8PROC
547543
"Build with support for Unicode properties using the utf8proc library;(only used if ARROW_COMPUTE is ON or ARROW_GANDIVA is ON)"
548544
ON)

cpp/cmake_modules/ThirdpartyToolchain.cmake

-90
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ set(ARROW_THIRDPARTY_DEPENDENCIES
6767
Snappy
6868
Substrait
6969
Thrift
70-
ucx
7170
utf8proc
7271
xsimd
7372
ZLIB
@@ -218,8 +217,6 @@ macro(build_dependency DEPENDENCY_NAME)
218217
build_substrait()
219218
elseif("${DEPENDENCY_NAME}" STREQUAL "Thrift")
220219
build_thrift()
221-
elseif("${DEPENDENCY_NAME}" STREQUAL "ucx")
222-
build_ucx()
223220
elseif("${DEPENDENCY_NAME}" STREQUAL "utf8proc")
224221
build_utf8proc()
225222
elseif("${DEPENDENCY_NAME}" STREQUAL "xsimd")
@@ -821,13 +818,6 @@ else()
821818
)
822819
endif()
823820

824-
if(DEFINED ENV{ARROW_UCX_URL})
825-
set(ARROW_UCX_SOURCE_URL "$ENV{ARROW_UCX_URL}")
826-
else()
827-
set_urls(ARROW_UCX_SOURCE_URL
828-
"https://github.com/openucx/ucx/archive/v${ARROW_UCX_BUILD_VERSION}.tar.gz")
829-
endif()
830-
831821
if(DEFINED ENV{ARROW_UTF8PROC_URL})
832822
set(ARROW_UTF8PROC_SOURCE_URL "$ENV{ARROW_UTF8PROC_URL}")
833823
else()
@@ -5548,85 +5538,5 @@ if(ARROW_WITH_AZURE_SDK)
55485538
set(AZURE_SDK_LINK_LIBRARIES Azure::azure-storage-files-datalake
55495539
Azure::azure-storage-blobs Azure::azure-identity)
55505540
endif()
5551-
# ----------------------------------------------------------------------
5552-
# ucx - communication framework for modern, high-bandwidth and low-latency networks
5553-
5554-
macro(build_ucx)
5555-
message(STATUS "Building UCX from source")
5556-
5557-
set(UCX_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/ucx_ep-install")
5558-
5559-
# link with static ucx libraries leads to test failures, use shared libs instead
5560-
set(UCX_SHARED_LIB_UCP "${UCX_PREFIX}/lib/libucp${CMAKE_SHARED_LIBRARY_SUFFIX}")
5561-
set(UCX_SHARED_LIB_UCT "${UCX_PREFIX}/lib/libuct${CMAKE_SHARED_LIBRARY_SUFFIX}")
5562-
set(UCX_SHARED_LIB_UCS "${UCX_PREFIX}/lib/libucs${CMAKE_SHARED_LIBRARY_SUFFIX}")
5563-
set(UCX_SHARED_LIB_UCM "${UCX_PREFIX}/lib/libucm${CMAKE_SHARED_LIBRARY_SUFFIX}")
5564-
5565-
set(UCX_CONFIGURE_COMMAND ./autogen.sh COMMAND ./configure)
5566-
list(APPEND
5567-
UCX_CONFIGURE_COMMAND
5568-
"CC=${CMAKE_C_COMPILER}"
5569-
"CXX=${CMAKE_CXX_COMPILER}"
5570-
"CFLAGS=${EP_C_FLAGS}"
5571-
"CXXFLAGS=${EP_CXX_FLAGS}"
5572-
"--prefix=${UCX_PREFIX}"
5573-
"--enable-mt"
5574-
"--enable-shared")
5575-
if(${UPPERCASE_BUILD_TYPE} STREQUAL "DEBUG")
5576-
list(APPEND
5577-
UCX_CONFIGURE_COMMAND
5578-
"--enable-profiling"
5579-
"--enable-frame-pointer"
5580-
"--enable-stats"
5581-
"--enable-fault-injection"
5582-
"--enable-debug-data")
5583-
else()
5584-
list(APPEND
5585-
UCX_CONFIGURE_COMMAND
5586-
"--disable-logging"
5587-
"--disable-debug"
5588-
"--disable-assertions"
5589-
"--disable-params-check")
5590-
endif()
5591-
set(UCX_BUILD_COMMAND ${MAKE} ${MAKE_BUILD_ARGS})
5592-
externalproject_add(ucx_ep
5593-
${EP_COMMON_OPTIONS}
5594-
URL ${ARROW_UCX_SOURCE_URL}
5595-
URL_HASH "SHA256=${ARROW_UCX_BUILD_SHA256_CHECKSUM}"
5596-
CONFIGURE_COMMAND ${UCX_CONFIGURE_COMMAND}
5597-
BUILD_IN_SOURCE 1
5598-
BUILD_COMMAND ${UCX_BUILD_COMMAND}
5599-
BUILD_BYPRODUCTS "${UCX_SHARED_LIB_UCP}" "${UCX_SHARED_LIB_UCT}"
5600-
"${UCX_SHARED_LIB_UCS}" "${UCX_SHARED_LIB_UCM}"
5601-
INSTALL_COMMAND ${MAKE} install)
5602-
5603-
# ucx cmake module sets UCX_INCLUDE_DIRS
5604-
set(UCX_INCLUDE_DIRS "${UCX_PREFIX}/include")
5605-
file(MAKE_DIRECTORY "${UCX_INCLUDE_DIRS}")
5606-
5607-
add_library(ucx::ucp SHARED IMPORTED)
5608-
set_target_properties(ucx::ucp PROPERTIES IMPORTED_LOCATION "${UCX_SHARED_LIB_UCP}")
5609-
add_library(ucx::uct SHARED IMPORTED)
5610-
set_target_properties(ucx::uct PROPERTIES IMPORTED_LOCATION "${UCX_SHARED_LIB_UCT}")
5611-
add_library(ucx::ucs SHARED IMPORTED)
5612-
set_target_properties(ucx::ucs PROPERTIES IMPORTED_LOCATION "${UCX_SHARED_LIB_UCS}")
5613-
5614-
add_dependencies(ucx::ucp ucx_ep)
5615-
add_dependencies(ucx::uct ucx_ep)
5616-
add_dependencies(ucx::ucs ucx_ep)
5617-
endmacro()
5618-
5619-
if(ARROW_WITH_UCX)
5620-
resolve_dependency(ucx
5621-
ARROW_CMAKE_PACKAGE_NAME
5622-
ArrowFlight
5623-
ARROW_PC_PACKAGE_NAME
5624-
arrow-flight
5625-
PC_PACKAGE_NAMES
5626-
ucx)
5627-
add_library(ucx::ucx INTERFACE IMPORTED)
5628-
target_include_directories(ucx::ucx INTERFACE "${UCX_INCLUDE_DIRS}")
5629-
target_link_libraries(ucx::ucx INTERFACE ucx::ucp ucx::uct ucx::ucs)
5630-
endif()
56315541

56325542
message(STATUS "All bundled static libraries: ${ARROW_BUNDLED_STATIC_LIBS}")

cpp/src/arrow/flight/CMakeLists.txt

-13
Original file line numberDiff line numberDiff line change
@@ -332,21 +332,8 @@ if(ARROW_BUILD_BENCHMARKS)
332332

333333
add_dependencies(arrow_flight arrow-flight-benchmark)
334334

335-
if(ARROW_WITH_UCX)
336-
if(ARROW_FLIGHT_TEST_LINKAGE STREQUAL "static")
337-
target_link_libraries(arrow-flight-benchmark arrow_flight_transport_ucx_static)
338-
target_link_libraries(arrow-flight-perf-server arrow_flight_transport_ucx_static)
339-
else()
340-
target_link_libraries(arrow-flight-benchmark arrow_flight_transport_ucx_shared)
341-
target_link_libraries(arrow-flight-perf-server arrow_flight_transport_ucx_shared)
342-
endif()
343-
endif()
344335
endif(ARROW_BUILD_BENCHMARKS)
345336

346-
if(ARROW_WITH_UCX)
347-
add_subdirectory(transport/ucx)
348-
endif()
349-
350337
if(ARROW_FLIGHT_SQL)
351338
add_subdirectory(sql)
352339

cpp/src/arrow/flight/flight_benchmark.cc

+1-23
Original file line numberDiff line numberDiff line change
@@ -43,17 +43,10 @@
4343
# include <cuda.h>
4444
# include "arrow/gpu/cuda_api.h"
4545
#endif
46-
#ifdef ARROW_WITH_UCX
47-
# include "arrow/flight/transport/ucx/ucx.h"
48-
#endif
4946

5047
DEFINE_bool(cuda, false, "Allocate results in CUDA memory");
5148
DEFINE_string(transport, "grpc",
52-
"The network transport to use. Supported: \"grpc\" (default)"
53-
#ifdef ARROW_WITH_UCX
54-
", \"ucx\""
55-
#endif // ARROW_WITH_UCX
56-
".");
49+
"The network transport to use. Supported: \"grpc\" (default).");
5750
DEFINE_string(server_host, "",
5851
"An existing performance server to benchmark against (leave blank to spawn "
5952
"one automatically)");
@@ -506,21 +499,6 @@ int main(int argc, char** argv) {
506499
options.disable_server_verification = true;
507500
}
508501
}
509-
} else if (FLAGS_transport == "ucx") {
510-
#ifdef ARROW_WITH_UCX
511-
arrow::flight::transport::ucx::InitializeFlightUcx();
512-
if (FLAGS_test_unix || !FLAGS_server_unix.empty()) {
513-
std::cerr << "Transport does not support domain sockets: " << FLAGS_transport
514-
<< std::endl;
515-
return EXIT_FAILURE;
516-
}
517-
ARROW_CHECK_OK(arrow::flight::Location::Parse("ucx://" + FLAGS_server_host + ":" +
518-
std::to_string(FLAGS_server_port))
519-
.Value(&location));
520-
#else
521-
std::cerr << "Not built with transport: " << FLAGS_transport << std::endl;
522-
return EXIT_FAILURE;
523-
#endif
524502
} else {
525503
std::cerr << "Unknown transport: " << FLAGS_transport << std::endl;
526504
return EXIT_FAILURE;

cpp/src/arrow/flight/perf_server.cc

+1-31
Original file line numberDiff line numberDiff line change
@@ -44,17 +44,10 @@
4444
#ifdef ARROW_CUDA
4545
# include "arrow/gpu/cuda_api.h"
4646
#endif
47-
#ifdef ARROW_WITH_UCX
48-
# include "arrow/flight/transport/ucx/ucx.h"
49-
#endif
5047

5148
DEFINE_bool(cuda, false, "Allocate results in CUDA memory");
5249
DEFINE_string(transport, "grpc",
53-
"The network transport to use. Supported: \"grpc\" (default)"
54-
#ifdef ARROW_WITH_UCX
55-
", \"ucx\""
56-
#endif // ARROW_WITH_UCX
57-
".");
50+
"The network transport to use. Supported: \"grpc\" (default).");
5851
DEFINE_string(server_host, "localhost", "Host where the server is running on");
5952
DEFINE_int32(port, 31337, "Server port to listen on");
6053
DEFINE_string(server_unix, "", "Unix socket path where the server is running on");
@@ -280,29 +273,6 @@ int main(int argc, char** argv) {
280273
ARROW_CHECK_OK(arrow::flight::Location::ForGrpcUnix(FLAGS_server_unix)
281274
.Value(&connect_location));
282275
}
283-
} else if (FLAGS_transport == "ucx") {
284-
#ifdef ARROW_WITH_UCX
285-
arrow::flight::transport::ucx::InitializeFlightUcx();
286-
if (FLAGS_server_unix.empty()) {
287-
if (!FLAGS_cert_file.empty() || !FLAGS_key_file.empty()) {
288-
std::cerr << "Transport does not support TLS: " << FLAGS_transport << std::endl;
289-
return EXIT_FAILURE;
290-
}
291-
ARROW_CHECK_OK(arrow::flight::Location::Parse("ucx://" + FLAGS_server_host + ":" +
292-
std::to_string(FLAGS_port))
293-
.Value(&bind_location));
294-
ARROW_CHECK_OK(arrow::flight::Location::Parse("ucx://" + FLAGS_server_host + ":" +
295-
std::to_string(FLAGS_port))
296-
.Value(&connect_location));
297-
} else {
298-
std::cerr << "Transport does not support domain sockets: " << FLAGS_transport
299-
<< std::endl;
300-
return EXIT_FAILURE;
301-
}
302-
#else
303-
std::cerr << "Not built with transport: " << FLAGS_transport << std::endl;
304-
return EXIT_FAILURE;
305-
#endif
306276
} else {
307277
std::cerr << "Unknown transport: " << FLAGS_transport << std::endl;
308278
return EXIT_FAILURE;

cpp/src/arrow/flight/transport/ucx/CMakeLists.txt

-70
This file was deleted.

0 commit comments

Comments
 (0)