Jasraj Dhanoa created SPARK-59907:
-------------------------------------

             Summary: StreamingShuffleWriter leaks in-flight off-heap buffer 
when write fails
                 Key: SPARK-59907
                 URL: https://issues.apache.org/jira/browse/SPARK-59907
             Project: Spark
          Issue Type: Bug
          Components: Structured Streaming
    Affects Versions: 5.0.0
            Reporter: Jasraj Dhanoa


When StreamingShuffleWriter.write() fails partway through, the in-flight 
off-heap buffer is referenced only by a local variable, so task completion 
cleanup does not release it. Because these buffers are not reclaimed by GC, the 
executor loses that off-heap memory until it restarts.

 

Failure scenarios:
 # The serializer throws while writing a record.
 # Closing the serialization stream fails before a buffer is sent.

 

Expected behavior: when write() fails, StreamingShuffleWriter should release 
the in-flight buffer and return its memory budget before rethrowing the 
exception.

 

Reproduction (tested on 5.0.0-SNAPSHOT, master at commit 44929778453): run a 
streaming shuffle write with a serializer that throws on a given record 
(scenario 1) or on stream close (scenario 2). After the task fails, the 
captured buffer still has refCnt 1 and one buffer's worth of memory budget is 
not returned. With the fix, refCnt drops to 0 and the budget is fully returned. 
Unit tests reproducing both scenarios will be included in the PR.



--
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