protected void addToJobPool(AbstractExecutable executable, int priority) { String jobDesc = executable.toString(); logger.info(jobDesc + " prepare to schedule and its priority is " + priority); try { context.addRunningJob(executable); jobExecutor.execute(executable); logger.info(jobDesc + " scheduled"); } catch (Exception ex) { context.removeRunningJob(executable); logger.warn(jobDesc + " fail to schedule", ex); } }
private void releaseJobLock(AbstractExecutable executable) { if (executable instanceof DefaultChainedExecutable) { ExecutableState state = executable.getStatus(); if (state != ExecutableState.READY && state != ExecutableState.RUNNING) { if (jobWithLocks.contains(executable.getId())) { logger.info( executable.toString() + " will release the lock for the job: " + executable.getId()); jobLock.unlock(getLockPath(executable.getId())); jobWithLocks.remove(executable.getId()); } } } } }
@Override public void run() { try (SetThreadName ignored = new SetThreadName("Scheduler %s Job %s", System.identityHashCode(DistributedScheduler.this), executable.getId())) { if (jobLock.lock(getLockPath(executable.getId()))) { logger.info(executable.toString() + " scheduled in server: " + serverName); context.addRunningJob(executable); jobWithLocks.add(executable.getId()); executable.execute(context); } } catch (ExecuteException e) { logger.error("ExecuteException job:" + executable.getId() + " in server: " + serverName, e); } catch (Exception e) { logger.error("unknown error execute job:" + executable.getId() + " in server: " + serverName, e); } finally { context.removeRunningJob(executable); releaseJobLock(executable); // trigger the next step asap fetcherPool.schedule(fetcher, 0, TimeUnit.SECONDS); } }
result = doWork(executableContext); } catch (Throwable e) { logger.error("error running Executable: {}", this.toString()); catchedException = e;
String jobDesc = executable.toString(); logger.info(jobDesc + " prepare to schedule"); try {
protected void addToJobPool(AbstractExecutable executable, int priority) { String jobDesc = executable.toString(); logger.info(jobDesc + " prepare to schedule and its priority is " + priority); try { context.addRunningJob(executable); jobExecutor.execute(executable); logger.info(jobDesc + " scheduled"); } catch (Exception ex) { context.removeRunningJob(executable); logger.warn(jobDesc + " fail to schedule", ex); } }
private void releaseJobLock(AbstractExecutable executable) { if (executable instanceof DefaultChainedExecutable) { ExecutableState state = executable.getStatus(); if (state != ExecutableState.READY && state != ExecutableState.RUNNING) { if (jobWithLocks.contains(executable.getId())) { logger.info( executable.toString() + " will release the lock for the job: " + executable.getId()); jobLock.unlock(getLockPath(executable.getId())); jobWithLocks.remove(executable.getId()); } } } } }
String jobDesc = executable.toString(); logger.info(jobDesc + " prepare to schedule"); try {
@Override public void run() { try (SetThreadName ignored = new SetThreadName("Scheduler %s Job %s", System.identityHashCode(DistributedScheduler.this), executable.getId())) { if (jobLock.lock(getLockPath(executable.getId()))) { logger.info(executable.toString() + " scheduled in server: " + serverName); context.addRunningJob(executable); jobWithLocks.add(executable.getId()); executable.execute(context); } } catch (ExecuteException e) { logger.error("ExecuteException job:" + executable.getId() + " in server: " + serverName, e); } catch (Exception e) { logger.error("unknown error execute job:" + executable.getId() + " in server: " + serverName, e); } finally { context.removeRunningJob(executable); releaseJobLock(executable); // trigger the next step asap fetcherPool.schedule(fetcher, 0, TimeUnit.SECONDS); } }
result = doWork(executableContext); } catch (Throwable e) { logger.error("error running Executable: {}", this.toString()); catchedException = e;