Moved finalization of previous job attempts for recurring jobs to the schedule time vs the run time to avoid cleanup issues with message ordering / saga conflicts. Also adjusted partitioning to be by JobId instead of AttemptId for endpoint partitions.