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

Jungtaek Lim reassigned SPARK-58977:
------------------------------------

    Assignee: Jonathan Gao

> TransformWithState in PySpark state server reports spurious daemon crash 
> during early shutdown
> ----------------------------------------------------------------------------------------------
>
>                 Key: SPARK-58977
>                 URL: https://issues.apache.org/jira/browse/SPARK-58977
>             Project: Spark
>          Issue Type: Bug
>          Components: PySpark, Structured Streaming
>    Affects Versions: 4.0.0
>            Reporter: Jonathan Gao
>            Assignee: Jonathan Gao
>            Priority: Major
>              Labels: pull-request-available
>
> This is a follow-up to SPARK-58751 and 
> https://github.com/apache/spark/pull/57941.
> TransformWithState in PySpark starts a JVM state-server listener that blocks 
> in ServerSocketChannel.accept() while waiting for the Python worker to 
> connect.
> If the runner is stopped before that connection is established, the shutdown 
> path interrupts and closes the channel. Java NIO wakes accept() with 
> ClosedByInterruptException or AsynchronousCloseException. These are expected 
> shutdown signals, but the pre-connect path does not handle them, so the 
> listener exception is wrapped as:
> TransformWithStateInPySpark state server daemon thread exited unexpectedly 
> (crashed)
> Expected behavior:
> The listener should terminate cleanly, preserve interrupt status for 
> interrupt-driven shutdown, and transition the processor handle to CLOSED.
> Proposed fix:
> - Interrupt the listener before closing the channel.
> - Handle the expected NIO interruption and closed-channel exceptions around 
> accept().
> - Preserve interrupt status only for the interrupt-driven path.
> - Add mocked exception-hierarchy tests and real loopback ServerSocketChannel 
> race tests.
> Pull request: https://github.com/apache/spark/pull/58217



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to