Skip to content

Commit 164e18a

Browse files
authored
apacheGH-45079: [FlightRPC][C++] Deprecate InitializeFlightUcx before removing UCX (apache#45080)
### Rationale for this change We want to remove the UCX experiment as discussed on the issue: - apache#43296 Based on the discussions of the PR removal we have decided to deprecate it before. ### What changes are included in this PR? Deprecation of InitializeFlightUcx ### Are these changes tested? No, I don't think we test `ARROW_WITH_UCX` on CI. ### Are there any user-facing changes? Yes, the PR deprecated Flight UCX * GitHub Issue: apache#45079 Authored-by: Raúl Cumplido <[email protected]> Signed-off-by: Sutou Kouhei <[email protected]>
1 parent 5293379 commit 164e18a

File tree

4 files changed

+18
-44
lines changed

4 files changed

+18
-44
lines changed

cpp/src/arrow/flight/transport/ucx/ucx.h

+2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ namespace flight {
2626
namespace transport {
2727
namespace ucx {
2828

29+
/// \deprecated Deprecated in 19.0.0. Flight UCX is deprecated.
30+
ARROW_DEPRECATED(" Deprecated in 19.0.0. Flight UCX is deprecated.")
2931
ARROW_FLIGHT_EXPORT
3032
void InitializeFlightUcx();
3133

docs/source/cpp/flight.rst

-34
Original file line numberDiff line numberDiff line change
@@ -362,38 +362,4 @@ Closing unresponsive connections
362362
.. _ARROW-16697: https://issues.apache.org/jira/browse/ARROW-16697
363363
.. _ARROW-6062: https://issues.apache.org/jira/browse/ARROW-6062
364364

365-
366-
Alternative Transports
367-
======================
368-
369-
The standard transport for Arrow Flight is gRPC_. The C++
370-
implementation also experimentally supports a transport based on
371-
UCX_. To use it, use the protocol scheme ``ucx:`` when starting a
372-
server or creating a client.
373-
374-
UCX Transport
375-
-------------
376-
377-
Not all features of the gRPC transport are supported. See
378-
:ref:`status-flight-rpc` for details. Also note these specific
379-
caveats:
380-
381-
- The server creates an independent UCP worker for each client. This
382-
consumes more resources but provides better throughput.
383-
- The client creates an independent UCP worker for each RPC
384-
call. Again, this trades off resource consumption for
385-
performance. This also means that unlike with gRPC, it is
386-
essentially equivalent to make all calls with a single client or
387-
with multiple clients.
388-
- The UCX transport attempts to avoid copies where possible. In some
389-
cases, it can directly reuse UCX-allocated buffers to back
390-
:class:`arrow::Buffer` objects, however, this will also extend the
391-
lifetime of associated UCX resources beyond the lifetime of the
392-
Flight client or server object.
393-
- Depending on the transport that UCX itself selects, you may find
394-
that increasing ``UCX_MM_SEG_SIZE`` from the default (around 8KB) to
395-
around 60KB improves performance (UCX will copy more data in a
396-
single call).
397-
398365
.. _gRPC: https://grpc.io/
399-
.. _UCX: https://openucx.org/

docs/source/format/Flight.rst

+6-1
Original file line numberDiff line numberDiff line change
@@ -333,9 +333,14 @@ schemes for the given transports:
333333
+----------------------------+--------------------------------+
334334
| (reuse connection) | arrow-flight-reuse-connection: |
335335
+----------------------------+--------------------------------+
336-
| UCX_ (plaintext) | ucx: |
336+
| UCX_ (plaintext) (1) | ucx: |
337337
+----------------------------+--------------------------------+
338338

339+
Notes:
340+
341+
* \(1) Flight UCX transport has been deprecated on the 19.0.0 release.
342+
The :ref:`dissociated-ipc` section proposes an alternative solution.
343+
339344
.. _UCX: https://openucx.org/
340345

341346
Connection Reuse

docs/source/status.rst

+10-9
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ Flight RPC
202202
+--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+
203203
| gRPC + TLS transport (grpc+tls:) |||| ||| | |
204204
+--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+
205-
| UCX_ transport (ucx:) || | | | | | | |
205+
| UCX_ transport (ucx:) (1) || | | | | | | |
206206
+--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+
207207

208208
Supported features in the gRPC transport:
@@ -212,13 +212,13 @@ Supported features in the gRPC transport:
212212
+============================================+=======+=======+=======+====+=======+=======+=======+=======+
213213
| All RPC methods |||| ||| | |
214214
+--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+
215-
| Authentication handlers |||| | ✓ (1) || | |
215+
| Authentication handlers |||| | ✓ (2) || | |
216216
+--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+
217217
| Call timeouts |||| | || | |
218218
+--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+
219219
| Call cancellation |||| | || | |
220220
+--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+
221-
| Concurrent client calls (2) |||| ||| | |
221+
| Concurrent client calls (3) |||| ||| | |
222222
+--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+
223223
| Custom middleware |||| | || | |
224224
+--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+
@@ -230,15 +230,15 @@ Supported features in the UCX transport:
230230
+--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+
231231
| Flight RPC Feature | C++ | Java | Go | JS | C# | Rust | Julia | Swift |
232232
+============================================+=======+=======+=======+====+=======+=======+=======+=======+
233-
| All RPC methods | ✓ (3) | | | | | | | |
233+
| All RPC methods | ✓ (4) | | | | | | | |
234234
+--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+
235235
| Authentication handlers | | | | | | | | |
236236
+--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+
237237
| Call timeouts | | | | | | | | |
238238
+--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+
239239
| Call cancellation | | | | | | | | |
240240
+--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+
241-
| Concurrent client calls | ✓ (4) | | | | | | | |
241+
| Concurrent client calls | ✓ (5) | | | | | | | |
242242
+--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+
243243
| Custom middleware | | | | | | | | |
244244
+--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+
@@ -247,10 +247,11 @@ Supported features in the UCX transport:
247247

248248
Notes:
249249

250-
* \(1) Support using AspNetCore authentication handlers.
251-
* \(2) Whether a single client can support multiple concurrent calls.
252-
* \(3) Only support for DoExchange, DoGet, DoPut, and GetFlightInfo.
253-
* \(4) Each concurrent call is a separate connection to the server
250+
* \(1) Flight UCX transport has been deprecated on the 19.0.0 release.
251+
* \(2) Support using AspNetCore authentication handlers.
252+
* \(3) Whether a single client can support multiple concurrent calls.
253+
* \(4) Only support for DoExchange, DoGet, DoPut, and GetFlightInfo.
254+
* \(5) Each concurrent call is a separate connection to the server
254255
(unlike gRPC where concurrent calls are multiplexed over a single
255256
connection). This will generally provide better throughput but
256257
consumes more resources both on the server and the client.

0 commit comments

Comments
 (0)