@Override public boolean allowConcurrentExecution(Map<String, List<ScheduledTask<?>>> activeTasks) { if (activeTasks.containsKey(ID)) { for (ScheduledTask<?> scheduledTask : activeTasks.get(ID)) { if (RUNNING.equals(scheduledTask.getTaskState())) { if (conflictsWith((MergeMetadataTask) scheduledTask.getTask())) { return false; } } } } return true; }
@Override public boolean allowConcurrentSubmission(Map<String, List<ScheduledTask<?>>> activeTasks) { if (activeTasks.containsKey(ID)) { for (ScheduledTask<?> scheduledTask : activeTasks.get(ID)) { if (isSubmitted(scheduledTask) && conflictsWith((GenerateMetadataTask) scheduledTask.getTask()) && scheduledTask.getSchedule() instanceof RunNowSchedule) { throw new TaskAlreadyScheduledException(scheduledTask, "Found same task in scheduler queue."); } } } return true; }
@Override public boolean allowConcurrentExecution(Map<String, List<ScheduledTask<?>>> activeTasks) { if (activeTasks.containsKey(ID)) { int activeRunningTasks = 0; for (ScheduledTask<?> scheduledTask : activeTasks.get(ID)) { if (RUNNING.equals(scheduledTask.getTaskState())) { if (conflictsWith((GenerateMetadataTask) scheduledTask.getTask())) { return false; } activeRunningTasks++; } } return activeRunningTasks < yumRegistry.maxNumberOfParallelThreads(); } return true; }
@SuppressWarnings("unchecked") private ScheduledTask<YumRepository> mergeAddedFiles(ScheduledTask<?> existingScheduledTask, GenerateMetadataTask taskToMerge) { if (isNotBlank(taskToMerge.getAddedFiles())) { final GenerateMetadataTask existingTask = (GenerateMetadataTask) existingScheduledTask.getTask(); if (isBlank(existingTask.getAddedFiles())) { existingTask.setAddedFiles(taskToMerge.getAddedFiles()); } else { existingTask.setAddedFiles( existingTask.getAddedFiles() + pathSeparator + taskToMerge.getAddedFiles()); } } return (ScheduledTask<YumRepository>) existingScheduledTask; }