At least once

1. restart task when executor fails.
2. recover from certain timepoint.

Why startedTasks and taskLocations are reset to empty? Should not just remove the failed tasks?