protected Integer getServerPriority(ScheduledTask task, String serverId) { String permittedServers = task.getPermittedServers(); if (StringUtils.isBlank(permittedServers)) { if (BooleanUtils.isTrue(task.getSingleton()) && !clusterManager.isMaster()) return null; else return 0; } String[] parts = permittedServers.trim().split("[,;]"); for (int i = 0; i < parts.length; i++) { if (serverId.equals(parts[i].trim())) { return i + 1; } } return null; }
@Override public String printActiveScheduledTasks() { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); StringBuilder sb = new StringBuilder(); List<ScheduledTask> tasks = scheduling.getActiveTasks(); for (ScheduledTask task : tasks) { sb.append(task).append(", lastStart="); if (task.getLastStartTime() != null) { sb.append(dateFormat.format(task.getLastStartTime())); if (BooleanUtils.isTrue(task.getSingleton())) sb.append(" on ").append(task.getLastStartServer()); } else { sb.append("<never>"); } sb.append("\n"); } return sb.toString(); }
@Override public List<ScheduledTask> getActiveTasks() { Coordinator.Context context = coordinator.begin(); coordinator.end(context); List<ScheduledTask> tasks = context.getTasks(); for (ScheduledTask task : tasks) { if (!BooleanUtils.isTrue(task.getSingleton())) { Long time = lastStartCache.get(task); if (time != null) task.setLastStartTime(new Date(time)); } } return tasks; }
protected void registerExecutionFinish(ScheduledTask task, ScheduledExecution execution, Object result, boolean manually) { if ((!BooleanUtils.isTrue(task.getLogFinish()) && !BooleanUtils.isTrue(task.getSingleton()) && task.getSchedulingType() != SchedulingType.FIXED_DELAY) || execution == null) return; log.trace("{}: registering execution finish", task); Transaction tx = persistence.createTransaction(); try { EntityManager em = persistence.getEntityManager(); execution = em.merge(execution); execution.setFinishTime(timeSource.currentTimestamp()); StringBuilder sb = new StringBuilder(); if (result != null) { sb.append(result.toString()); } if (manually) { sb.append("\n{Executed manually}"); } execution.setResult(sb.toString()); tx.commit(); } finally { tx.end(); } }
protected ScheduledExecution registerExecutionStart(ScheduledTask task, long now) { if (!BooleanUtils.isTrue(task.getLogStart()) && !BooleanUtils.isTrue(task.getSingleton()) && task.getSchedulingType() != SchedulingType.FIXED_DELAY) return null; log.trace("{}: registering execution start", task); Transaction tx = persistence.createTransaction(); try { EntityManager em = persistence.getEntityManager(); ScheduledExecution execution = metadata.create(ScheduledExecution.class); execution.setTask(em.getReference(ScheduledTask.class, task.getId())); execution.setStartTime(new Date(now)); execution.setServer(serverInfo.getServerId()); em.persist(execution); tx.commit(); return execution; } finally { tx.end(); } }
if (BooleanUtils.isTrue(task.getSingleton())) { if (task.getStartDate() != null || SchedulingType.CRON == task.getSchedulingType()) { long currentStart;