When the JobManager receives a JobStatusChanged message, it will look up the ExecutionGraph for the given JobID. If there is no ExecutionGraph, then a RemoveJob message is sent to itself. In the general case, this is not problematic, because the RemoveJob message won't do anything if there is no ExecutionGraph. However, since this is an asynchronous call, it can happen that the corresponding job of the JobID is recovered before receiving the RemoveJob message. In this case, the newly recovered job would be removed.
I propose to change the behaviour such that a JobStatusChanged for a non-existing ExecutionGraph will be simply ignored.