Как правильно отменить задачу Nexus (как исполняемый скрипт)? - PullRequest
0 голосов
/ 20 апреля 2020

Я написал сценарий очистки для хранилища 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 для архивирования моей цели?

1 Ответ

0 голосов
/ 02 мая 2020

Не все задачи отменяемы. Вы могли бы подать проблему в questions.sonatype.com, чтобы попросить об этом, однако, интерфейс сценариев имеет проблему безопасности и больше не включен в более новых версиях NXRM3. Я подозреваю, что в конечном итоге он будет заменен REST API.

...