@Override
public boolean start() {
collectLongJobs();
LongJobGlobalConfig.LONG_JOB_DEFAULT_TIMEOUT.installValidateExtension(new GlobalConfigValidatorExtensionPoint() {
@Override
public void validateGlobalConfig(String category, String name, String oldValue, String newValue) throws GlobalConfigException {
Long v = Long.valueOf(newValue);
if (v < 10800) {
throw new GlobalConfigException("long job timeout must be larger than 10800s");
}
}
});
dbf.installEntityLifeCycleCallback(LongJobVO.class, EntityEvent.PRE_UPDATE, (evt, o) -> {
LongJobVO job = (LongJobVO) o;
if (job.getExecuteTime() == null && jobCompleted(job)) {
long time = (System.currentTimeMillis() - job.getCreateDate().getTime()) / 1000;
job.setExecuteTime(time);
logger.info(String.format("longjob [uuid:%s] set execute time:%d", job.getUuid(), time));
}
});
populateExtensions();
return true;
}