Nexus:名为“存储方面清理”的未知任务

问题描述 投票:0回答:3

我安装了Sonatype Nexus OSS 3.6.2-01 尽管我没有配置任何计划任务,但我可以在命令行中看到 Nexus 每十分钟运行一次名为“存储方面清理”的任务。

因为我找不到任何有关此任务的信息,所以我终于来到了这里。

2017-12-20 08:40:00,013+0100 INFO  [quartz-3-thread-19]  *SYSTEM org.sonatype.nexus.quartz.internal.task.QuartzTaskInfo - Task 'Storage facet cleanup' [repository.storage-facet-cleanup] state change WAITING -> RUNNING
2017-12-20 08:40:00,051+0100 INFO  [quartz-3-thread-19]  *SYSTEM org.sonatype.nexus.quartz.internal.task.QuartzTaskInfo - Task 'Storage facet cleanup' [repository.storage-facet-cleanup] state change RUNNING -> WAITING (OK)
2017-12-20 08:50:00,014+0100 INFO  [quartz-3-thread-19]  *SYSTEM org.sonatype.nexus.quartz.internal.task.QuartzTaskInfo - Task 'Storage facet cleanup' [repository.storage-facet-cleanup] state change WAITING -> RUNNING
2017-12-20 08:50:00,029+0100 INFO  [quartz-3-thread-19]  *SYSTEM org.sonatype.nexus.quartz.internal.task.QuartzTaskInfo - Task 'Storage facet cleanup' [repository.storage-facet-cleanup] state change RUNNING -> WAITING (OK)
2017-12-20 09:00:00,015+0100 INFO  [quartz-3-thread-19]  *SYSTEM org.sonatype.nexus.quartz.internal.task.QuartzTaskInfo - Task 'Storage facet cleanup' [repository.storage-facet-cleanup] state change WAITING -> RUNNING
2017-12-20 09:00:00,031+0100 INFO  [quartz-3-thread-19]  *SYSTEM org.sonatype.nexus.quartz.internal.task.QuartzTaskInfo - Task 'Storage facet cleanup' [repository.storage-facet-cleanup] state change RUNNING -> WAITING (OK)
2017-12-20 09:10:00,016+0100 INFO  [quartz-3-thread-19]  *SYSTEM org.sonatype.nexus.quartz.internal.task.QuartzTaskInfo - Task 'Storage facet cleanup' [repository.storage-facet-cleanup] state change WAITING -> RUNNING
2017-12-20 09:10:00,032+0100 INFO  [quartz-3-thread-19]  *SYSTEM org.sonatype.nexus.quartz.internal.task.QuartzTaskInfo - Task 'Storage facet cleanup' [repository.storage-facet-cleanup] state change RUNNING -> WAITING (OK)

这个任务有什么用?

为什么它在管理面板的“任务”部分中不可见?

有没有办法禁用此任务(或将其配置为仅在晚上运行)?

nexus
3个回答
1
投票

这是 NXRM 正确运行所需的清理任务。未列出它是因为它不可禁用/可配置。


0
投票

这是类

StorageFacetCleanupTask
中定义的清理任务,它在
performDeletions()
上运行
storageFacetManager
:

 @Override
  protected Void execute() throws Exception {
    thread = Thread.currentThread();
    long count;
    do {
      count = storageFacetManager.performDeletions();
    }
    while (count > 0 && !isCanceled());
    return null;
}

方法

performDeletions
StorageFacetManagerImpl
中定义,它删除所有标有
P_PENDING_DELETION
的桶:

    @Override
      @Guarded(by = STARTED)
      public long performDeletions() {
        List<Bucket> buckets = findBucketsForDeletion();
        return buckets.stream().filter((bucket) -> {
          try {
            log.info("Deleting bucket for repository {}", bucket.getRepositoryName());
            deleteBucket(bucket);
            return true;
          }
          catch (Exception e) {
            log.warn("Unable to delete bucket with repository name {}, will require manual cleanup",
                bucket.getRepositoryName(), e);
            return false;
          }
        }).count();
      }

所有标有

P_PENDING_DELETION
的桶均由
findBucketsForDeletion
收集于
StorageFacetManagerImpl
:

private List<Bucket> findBucketsForDeletion() {
    return inTx(databaseInstanceProvider).call(db -> {
      return StreamSupport
          .stream(bucketEntityAdapter.browse(db).spliterator(), false)
          .filter((bucket) -> bucket.attributes().contains(P_PENDING_DELETION))
          .collect(Collectors.toList());
    });
}

0
投票

是否有更详细的日志可用于存储方面清理任务?如果是这样,我应该为哪个类别启用调试日志记录才能看到它?我在清理某些存储库时遇到问题(错误的请求。原因:存储库路径在初始“/”之后必须有另一个“/”),并且想找出哪些存储库,进行审查并可能修复它们。

© www.soinside.com 2019 - 2024. All rights reserved.