[
https://issues.apache.org/jira/browse/ARROW-16592?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17538239#comment-17538239
]
David Li commented on ARROW-16592:
----------------------------------
Can you provide a reproduction? This still works:
{code:python}
import traceback
import pyarrow as pa
import pyarrow.flight as flight
class Server(flight.FlightServerBase):
def do_put(self, context, descriptor, reader, writer):
raise flight.FlightCancelledError("foo", extra_info=b"bar")
print("PyArrow version:", pa.__version__)
server = Server("grpc://localhost:0")
client = flight.connect(f"grpc://localhost:{server.port}")
schema = pa.schema([("a", pa.int64())])
writer, reader = client.do_put(flight.FlightDescriptor.for_command(b""), schema)
try:
writer.write_batch(pa.record_batch([[1]], schema=schema))
writer.close()
except flight.FlightError as e:
traceback.print_exc()
print(e.extra_info)
except Exception:
traceback.print_exc()
{code}
{noformat}
PyArrow version: 8.0.0
Traceback (most recent call last):
File "/home/lidavidm/Code/upstream/arrow-16592/test.py", line 18, in <module>
writer.close()
File "pyarrow/_flight.pyx", line 1031, in
pyarrow._flight.MetadataRecordBatchWriter.close
File "pyarrow/_flight.pyx", line 64, in pyarrow._flight.check_flight_status
pyarrow._flight.FlightCancelledError: foo. Detail: Cancelled. gRPC client debug
context: {"created":"@1652798292.507666326","description":"Error received from
peer
ipv4:127.0.0.1:42099","file":"/home/conda/feedstock_root/build_artifacts/grpc-cpp_1651922392722/work/src/core/lib/surface/call.cc","file_line":1074,"grpc_message":"foo.
Detail: Cancelled","grpc_status":1}. Client context: OK
b'bar'
{noformat}
> [FlightRPC][Python] Regression in DoPut error handling
> ------------------------------------------------------
>
> Key: ARROW-16592
> URL: https://issues.apache.org/jira/browse/ARROW-16592
> Project: Apache Arrow
> Issue Type: Bug
> Reporter: Lubo Slivka
> Assignee: David Li
> Priority: Major
>
> In PyArrow 8.0.0, any error raised while handling DoPut on the server results
> in FlightInternalError on the client.
> In PyArrow 7.0.0, errors raised while handling DoPut are propagated/converted
> to non-internal errors.
> —
> Example: on 7.0.0, raising FlightCancelledError while handling DoPut on the
> server would propagate that error including extra_info all the way to the
> FlightClient. This is not the case anymore on 8.0.0.
> The FlightInternalError contains extra detail that is derived from the
> cancelled error though:
> {code:java}
> /arrow/cpp/src/arrow/flight/client.cc:363: Close() failed: IOError: <error
> message from FlightError is here>. Detail: Cancelled. gRPC client debug
> context: {"created":"@1652777650.446052211","description":"Error received
> from peer
> ipv4:127.0.0.1:16001","file":"/opt/vcpkg/buildtrees/grpc/src/85a295989c-6cf7bf442d.clean/src/core/lib/surface/call.cc","file_line":903,"grpc_message":"<error
> message from FlightError is here>. Detail: Cancelled","grpc_status":1}.
> Client context: OK. Detail: Cancelled
> {code}
> Note: skimming through the code, it seems this problem is not unique to
> PyArrow.
--
This message was sent by Atlassian Jira
(v8.20.7#820007)