public void removeScheduler(String name) { synchronized (schedulers) { Scheduler s = schedulers.remove(name); if (s != null) { s.stop(); } } }
@Override public String getStatus(String sessionId, String jobId) throws TException { if (interpreterGroup == null) { return Status.UNKNOWN.name(); } synchronized (interpreterGroup) { List<Interpreter> interpreters = interpreterGroup.get(sessionId); if (interpreters == null) { logger.info("getStatus:" + Status.UNKNOWN.name()); return Status.UNKNOWN.name(); } for (Interpreter intp : interpreters) { Job job = intp.getScheduler().getJob(jobId); logger.info("job:" + job); if (job != null) { logger.info("getStatus: " + job.getStatus().name()); return job.getStatus().name(); } } } logger.info("getStatus:" + Status.UNKNOWN.name()); return Status.UNKNOWN.name(); }
st, context); scheduler.submit(job);
@Override public void cancel(String sessionId, String className, RemoteInterpreterContext interpreterContext) throws TException { logger.info("cancel {} {}", className, interpreterContext.getParagraphId()); Interpreter intp = getInterpreter(sessionId, className); String jobId = interpreterContext.getParagraphId(); Job job = intp.getScheduler().getJob(jobId); if (job != null && job.getStatus() == Status.PENDING) { job.setStatus(Status.ABORT); } else { try { intp.cancel(convert(interpreterContext, null)); } catch (InterpreterException e) { throw new TException("Fail to cancel", e); } } }