Yuqin Luo created SPARK-60756:
---------------------------------

             Summary: SQLAppStatusListener.onJobStart forces synchronous 
kvstore write during history replay, causing O(J^2) replay cost
                 Key: SPARK-60756
                 URL: https://issues.apache.org/jira/browse/SPARK-60756
             Project: Spark
          Issue Type: Bug
          Components: SQL
    Affects Versions: 4.0.6
            Reporter: Yuqin Luo


SQLAppStatusListener.onJobStart unconditionally calls update(exec, force = 
true), forcing a synchronous KVStore write on every job-start event, even 
during History Server replay (live = false).

During replay, liveUpdatePeriodNs is -1, so this forced write is the only 
source of intermediate writes. Each write serializes the execution's growing 
job/stage state, so an execution with J job-start events costs O(J^2) to replay.

Proposed fix: change update(exec, force = true) to update(exec, force = live) 
in onJobStart. Live UI behavior is unchanged. During replay, the final write on 
execution end (onExecutionEnd) is preserved, and executions that never complete 
are still persisted by the existing kvstore.onFlush hook.

Measured with local History Server replay of two real production event logs 
(patched vs. unpatched):
- 615.7 MB event log: 531s -> 101s (5.3x faster)
- 1010 MB event log: 833.7s -> 284.5s (2.93x faster)
The final replayed data is unchanged.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

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

Reply via email to