private void cancelLongJob(String uuid, Completion completion) { LongJobVO vo = updateByUuid(uuid, it -> it.setState(LongJobState.Canceling)); LongJob job = longJobFactory.getLongJob(vo.getJobName()); logger.info(String.format("longjob [uuid:%s, name:%s] has been marked canceling", vo.getUuid(), vo.getName())); job.cancel(vo, new Completion(completion) { @Override public void success() { updateByUuid(uuid, it -> it.setState(LongJobState.Canceled)); logger.info(String.format("longjob [uuid:%s, name:%s] has been canceled", vo.getUuid(), vo.getName())); completion.success(); } @Override public void fail(ErrorCode errorCode) { updateByUuid(uuid, it -> it.setState(LongJobState.Failed)); logger.error(String.format("failed to cancel longjob [uuid:%s, name:%s]", vo.getUuid(), vo.getName())); completion.fail(errorCode); } }); }