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/01/25 00:04:00 UTC
[jira] [Created] (ARROW-15437) [Python][FlightRPC] Flaky test test_interrupt
David Li created ARROW-15437:
--------------------------------
Summary: [Python][FlightRPC] Flaky test test_interrupt
Key: ARROW-15437
URL: https://issues.apache.org/jira/browse/ARROW-15437
Project: Apache Arrow
Issue Type: Bug
Components: FlightRPC, Python
Reporter: David Li
Found during 7.0.0 verification, it seems we aren't accounting for all possible ways to find the exception we expect
{noformat}
pyarrow/tests/test_flight.py::test_interrupt FAILED [ 93%]
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> traceback >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> def test_interrupt():
if threading.current_thread().ident != threading.main_thread().ident:
pytest.skip("test only works from main Python thread")
# Skips test if not available
raise_signal = util.get_raise_signal()
def signal_from_thread():
time.sleep(0.5)
raise_signal(signal.SIGINT)
exc_types = (KeyboardInterrupt, pa.ArrowCancelled)
def test(read_all):
try:
try:
t = threading.Thread(target=signal_from_thread)
with pytest.raises(exc_types) as exc_info:
t.start()
read_all()
finally:
t.join()
except KeyboardInterrupt:
# In case KeyboardInterrupt didn't interrupt read_all
# above, at least prevent it from stopping the test suite
pytest.fail("KeyboardInterrupt didn't interrupt Flight read_all")
e = exc_info.value.__context__
assert isinstance(e, pa.ArrowCancelled) or \
isinstance(e, KeyboardInterrupt)
with CancelFlightServer() as server:
client = FlightClient(("localhost", server.port))
reader = client.do_get(flight.Ticket(b""))
> test(reader.read_all)pyarrow/tests/test_flight.py:1952:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ read_all = <built-in method read_all of pyarrow._flight.FlightStreamReader object at 0x7f40a80c6f40> def test(read_all):
try:
try:
t = threading.Thread(target=signal_from_thread)
with pytest.raises(exc_types) as exc_info:
t.start()
read_all()
finally:
t.join()
except KeyboardInterrupt:
# In case KeyboardInterrupt didn't interrupt read_all
# above, at least prevent it from stopping the test suite
pytest.fail("KeyboardInterrupt didn't interrupt Flight read_all")
e = exc_info.value.__context__
> assert isinstance(e, pa.ArrowCancelled) or \
isinstance(e, KeyboardInterrupt)
E AssertionError: assert (False or False)
E + where False = isinstance(None, <class 'pyarrow.lib.ArrowCancelled'>)
E + where <class 'pyarrow.lib.ArrowCancelled'> = pa.ArrowCancelled
E + and False = isinstance(None, KeyboardInterrupt)pyarrow/tests/test_flight.py:1945: AssertionError
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> entering PDB >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> PDB post_mortem (IO-capturing turned off) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> /tmp/arrow/apache-arrow-7.0.0/python/pyarrow/tests/test_flight.py(1945)test()
-> assert isinstance(e, pa.ArrowCancelled) or \
(Pdb) p e
None
(Pdb) p exc_info
<ExceptionInfo ArrowCancelled('Operation cancelled. Detail: received signal 2') tblen=5>
(Pdb) p exc_info.value
ArrowCancelled('Operation cancelled. Detail: received signal 2')
(Pdb) p exc_info.value.__context__
None
{noformat}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)