public void addFailureReasonToJob(
      UUID jobId, String failureReason)
      throws IOException {
    PortabilityJob existingJob = findJob(jobId);
    PortabilityJob updatedJob = existingJob.toBuilder().setFailureReason(failureReason).build();
    updateJob(jobId, updatedJob);
  }
Verifies a {@code PortabilityJob} already exists for {@code jobId}, and updates the entry to
{@code job}. If {@code validator} is non-null, validator.validate() is called first, as part of
the atomic update.

@throws IOException if a job didn't already exist for {@code jobId} or there was a problem
updating it
@throws IllegalStateException if validator.validate() failed
portability-spi-cloud/src/main/java/org/datatransferproject/spi/cloud/storage/JobStoreWithValidator.java