private <T> T tryCall(Job<T> job, Progress progress) { progress.start(); try { T result = job.call(progress); progress.success(); return result; } catch (Exception ex) { LOG.warn("Error executing job", ex); progress.failed(createFailureMessage(ex), ex); throw new JobExecutionException(ex); } }