Я написал сценарий очистки для хранилища Nexus, который проверяет, используется ли компонент, вызывая интерфейс отдыха сторонней системы. Короче говоря: этот сценарий имеет значительное время выполнения из-за количества компонентов и сетевого трафика c. Поэтому его нужно отменить, и с этим требованием мои проблемы растут.
этот скрипт был написан на groovy и выполнялся вручную с использованием интерфейса задач Nexus. Создано новое задание с использованием скелета «Выполнить скрипт». При попытке остановить задачу в журнале указываются только:
admin org.sonatype.nexus.quartz.internal.task.QuartzTaskJob - задача не может быть отменена: 'TEST' [script]
К сожалению, примеры сценариев Nexus все короткие и удобные, и никто не использует саму функцию отмены.
Итак, я посмотрел источник предложенного QuartzTaskJob, и я увидел, что это Оболочка задачи Nexus, и она должна автоматически использоваться QuartzSchedulerSPI.
Поэтому я реализовал ее фиктивную версию, чтобы протестировать ее с реализованными Задачами (например, RestoreMetadataTask) в качестве примеров. Во-первых, включив в него sleep (), а вторая попытка была для l oop, которую вы видите в приведенном ниже коде. Обе попытки имели один и тот же печальный конец.
import org.sonatype.nexus.scheduling.Cancelable;
import org.sonatype.nexus.scheduling.TaskSupport;
public class CancelableTask
extends TaskSupport
implements Cancelable
{
@Override
public String getMessage(){
return null
}
@Override
protected Void execute() throws Exception{
log.info("Start TimeTestCancel")
for(int i = 0; i < 1000000000000; i++){
for(int j = 0; j < 1000000000000; j++) {
if (isCanceled()) {
log.info(i)
break;
}
}
}
log.info("Finished TimeTestCancel")
}
}
Сон и циклы: при тестировании на Nexus 3.7.1-02 он просто менял статус на «Заблокирован», показывая кнопку «Стоп», но указав « Задача не отменяется »снова при нажатии. Не удалось их удалить или изменить. Только циклы: при тестировании на Nexus 3.21.1-01 он просто выполняется так быстро, что я не могу попытаться отменить его.
Итак, я в основном спрашиваю себя, что мне не хватает? Можно ли вообще использовать отменяемые задания как сценарий groovy? Или мне нужно внедрить плагин Nexus для архивирования моей цели?