You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "David Li (Jira)" <ji...@apache.org> on 2022/04/01 21:03:00 UTC
[jira] [Commented] (ARROW-16086) [Python] Calls to do_get ignore Python signal handlers
[ https://issues.apache.org/jira/browse/ARROW-16086?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17516127#comment-17516127 ]
David Li commented on ARROW-16086:
----------------------------------
What is FlightStreamHandler here? That's not part of PyArrow.
When I try, it looks like the main thread is stuck in gRPC. Unfortunately, I don't think we can do much about that. While the Python interpreter does appear handle the signal (from looking in a debugger), it can't pass it to the application until control returns to the interpreter thread. And that isn't happening because gRPC appears to call epoll_wait in a loop, ignoring interrupts: [https://github.com/grpc/grpc/blob/5fc3ff82032d0ebc4bf252a170ebe66aacf9ed9d/src/core/lib/iomgr/ev_epoll1_linux.cc#L723-L727]
We might be able to override the signal handler in C++ or Cython and forcibly cancel the gRPC call…it might be better, though, for the application to just use a background thread, if you want to do anything besides cancel the gRPC call. (Also doing so would be very tricky, and gRPC is explicitly not signal-safe, IIRC.)
> [Python] Calls to do_get ignore Python signal handlers
> ------------------------------------------------------
>
> Key: ARROW-16086
> URL: https://issues.apache.org/jira/browse/ARROW-16086
> Project: Apache Arrow
> Issue Type: Bug
> Components: FlightRPC, Python
> Reporter: Alex Bergeron
> Priority: Major
>
> Similar to ARROW-15106 but observed from the client, not the server.
> The Python Flight client blocks the thread and ignores signal handlers. This makes it impossible for the client to handle the signal handler and cancel the query before it has returned a FlightStreamHandler.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)