You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Krisztian Szucs (Jira)" <ji...@apache.org> on 2022/01/25 13:52:00 UTC

[jira] [Resolved] (ARROW-15437) [Python][FlightRPC] Flaky test test_interrupt

     [ https://issues.apache.org/jira/browse/ARROW-15437?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Krisztian Szucs resolved ARROW-15437.
-------------------------------------
    Fix Version/s: 7.0.0
       Resolution: Fixed

Issue resolved by pull request 12245
[https://github.com/apache/arrow/pull/12245]

> [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
>            Assignee: David Li
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 7.0.0
>
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> 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)