Hi, I didn't check your previous discussion in JIRA, but according to Kay, the ideal case is to make the process of serializing tasks asynchronous; in your current approach, it's actually synchronous (L278 - L281); 


you can check how TaskResultGetter works: the taskRunner finishes the task and sends a message to the driver, CoarseSchedulerBackend (CSB)...CSB receives that and then taskScheduler -> taskManager -> dagScheduler (simply function call, no message) to mark the task as finished. The Async process is achieved by the message

I think @kayousterhout 's idea is that you develop new messages in your patch, when the serialization is finished, it notifies the CSB to launch the task....