When a job finishes, its JobManagerRunnerResult will be processed in the callback of Dispatcher#runJob. In the callback, ExecutionGraphInfo will be archived by HistoryServerArchivist asynchronously. However, the CompletableFuture of the archiving is ignored. The job may be removed before the archiving is finished. For the batch job running in the per-job/application mode, the dispatcher will terminate itself once the job is finished. In this case, ExecutionGraphInfo may not be archived when the dispatcher terminates.
If the ExecutionGraphInfo is lost, users are not able to know whether the batch job is finished normally or not. They have to refer to the logs for the result.
The session mode is not affected, since the dispatcher won't terminate itself once the job is finished. The HistoryServerArchivist gets enough time to archive the ExcutionGraphInfo.