private void launchNewTask(final String repositoryName) { TaskConfiguration configuration = taskScheduler .createTaskConfigurationInstance(RebuildBrowseNodesTaskDescriptor.TYPE_ID); configuration.setString(RebuildBrowseNodesTaskDescriptor.REPOSITORY_NAME_FIELD_ID, repositoryName); configuration.setName("Rebuild repository browse tree - (" + repositoryName + ")"); taskScheduler.submit(configuration); }
public RepositoryTaskFilter getRepositoryTaskFilter() { // we are allowing all, and subclasses will filter as they want return new DefaultRepositoryTaskFilter().setAllowsRepositoryScanning( true ).setAllowsScheduledTasks( true ).setAllowsUserInitiatedTasks( true ).setContentOperators( DefaultRepositoryTaskActivityDescriptor.ALL_CONTENT_OPERATIONS ).setAttributeOperators( DefaultRepositoryTaskActivityDescriptor.ALL_ATTRIBUTES_OPERATIONS ); }
/** * Returns whether or not a reindexing task exists for a particular npm repository. */ private boolean hasRunningTask(final Repository repository) { for (TaskInfo taskInfo : taskScheduler.listsTasks()) { TaskConfiguration taskConfiguration = taskInfo.getConfiguration(); String typeId = taskConfiguration.getTypeId(); String repositoryName = taskConfiguration.getString(REPOSITORY_NAME_FIELD_ID); if (ReindexNpmRepositoryTaskDescriptor.TYPE_ID.equals(typeId) && repository.getName().equals(repositoryName) && TaskInfo.State.RUNNING.equals(taskInfo.getCurrentState().getState())) { return true; } } return false; } }
@Override public boolean isRebuilding() { String repositoryName = getRepository().getName(); return taskScheduler.listsTasks().stream() .filter(task -> RebuildBrowseNodesTaskDescriptor.TYPE_ID.equals(task.getTypeId())) .filter(task -> TaskInfo.State.RUNNING.equals(task.getCurrentState().getState())) .anyMatch(task -> { String taskRepositoryName = task.getConfiguration().getString(REPOSITORY_NAME_FIELD_ID); return taskRepositoryName.equals(repositoryName) || taskRepositoryName.equals(RepositorySelector.ALL); }); } }
private void reindexRepo(Repository repository, boolean full, String taskName) { AbstractNexusRepositoriesPathAwareTask<Object> rt; if (full) { rt = nexusScheduler.createTaskInstance(RepairIndexTask.class); } else { rt = nexusScheduler.createTaskInstance(UpdateIndexTask.class); } rt.setRepositoryId(repository.getId()); nexusScheduler.submit(taskName, rt); }
private boolean isRebuildTask(final String repositoryName, final TaskInfo taskInfo) { return RebuildBrowseNodesTaskDescriptor.TYPE_ID.equals(taskInfo.getConfiguration().getTypeId()) && repositoryName .equals(taskInfo.getConfiguration().getString(RebuildBrowseNodesTaskDescriptor.REPOSITORY_NAME_FIELD_ID)); }
private boolean launchExistingTask(final String repositoryName) throws TaskRemovedException { for (TaskInfo taskInfo : taskScheduler.listsTasks()) { if (isRebuildTask(repositoryName, taskInfo)) { if (!TaskInfo.State.RUNNING.equals(taskInfo.getCurrentState().getState())) { taskInfo.runNow(); } return true; } } return false; }
private void removeOldRebuildTasks() { taskScheduler.listsTasks().stream() .filter(task -> RebuildAssetUploadMetadataTaskDescriptor.TYPE_ID.equals(task.getConfiguration().getTypeId())) .forEach(TaskInfo::remove); } }
/** * Schedule one-off background task to rebuild the indexes of all repositories. */ private void rebuildIndex() { TaskConfiguration taskConfig = taskScheduler.createTaskConfigurationInstance(RebuildIndexTaskDescriptor.TYPE_ID); taskConfig.setString(RepositoryTaskSupport.REPOSITORY_NAME_FIELD_ID, "*"); try { taskScheduler.submit(taskConfig); } catch (RuntimeException e) { log.warn("Problem scheduling rebuild of repository indexes", e); } }
@Override public void initializeConfiguration(final TaskConfiguration configuration) { // cover upgrade from non-HA to HA: task will warn until a node is chosen configuration.setString(LIMIT_NODE_KEY, ""); } }
/** * @return Function that returns {@code true} when all tasks have stopped; otherwise {@code false} */ public static Callable<Boolean> tasksDone(TaskScheduler taskScheduler) { return () -> taskScheduler.getExecutedTaskCount() > 0 && taskScheduler.getRunningTaskCount() == 0; }
/** * {@inheritDoc} */ public String getId() { return getParameter( ID_KEY ); }
public DefaultRepositoryTaskActivityDescriptor setRepositoryScanningStartingPath( String repositoryScanningStartingPath ) { setScanningRepository( repositoryScanningStartingPath != null ); this.repositoryScanningStartingPath = repositoryScanningStartingPath; return this; }
@Override public boolean allowConcurrentExecution( Map<String, List<ScheduledTask<?>>> activeTasks ) { return !hasIntersectingTasksThatRuns( activeTasks ); }
@Override public void initializeConfiguration(final TaskConfiguration configuration) { configuration.setBoolean(MULTINODE_KEY, true); } }
/** * Schedules and immediately runs a task to reindex a particular npm repository. */ private void runReindexTaskForRepository(final Repository repository) { TaskConfiguration configuration = taskScheduler .createTaskConfigurationInstance(ReindexNpmRepositoryTaskDescriptor.TYPE_ID); configuration.setString(REPOSITORY_NAME_FIELD_ID, repository.getName()); configuration.setName("Reindex npm repository - (" + repository.getName() + ")"); taskScheduler.submit(configuration); }
/** * {@inheritDoc} */ public String getName() { return getParameter( NAME_KEY ); }
/** * {@inheritDoc} */ public String getAlertEmail() { return getParameter( ALERT_EMAIL_KEY ); }