Search in sources :

Example 6 with RescanablePath

use of org.commonjava.indy.subsys.prefetch.models.RescanablePath in project indy by Commonjava.

the class PrefetchFrontier method rescheduleForRescan.

public void rescheduleForRescan() {
    if (shouldSchedule && !hasMore) {
        lockAnd(t -> {
            for (RemoteRepository repo : repoQueue) {
                if (repo.isPrefetchRescan()) {
                    String rescanTime = repo.getPrefetchRescanTimestamp();
                    logger.trace("repo's current rescan time: {}", rescanTime);
                    if (StringUtils.isBlank(rescanTime) || isNowAfter(rescanTime)) {
                        repo.setPrefetchRescanTimestamp(getNextRescanTimeFromNow(config.getRescanIntervalSeconds()));
                        try {
                            // Will not send store update event to avoid recursive rescheduling
                            storeDataManager.storeArtifactStore(repo, new ChangeSummary(ChangeSummary.SYSTEM_USER, "Update store for prefetch rescan update"), false, false, new EventMetadata());
                        } catch (IndyDataException e) {
                            logger.error(String.format("Can not update store in prefetching rescan for repo: %s", repo), e);
                        }
                        logger.trace("Rescan time set. Repo's next rescan time: {}", repo.getPrefetchRescanTimestamp());
                        final boolean isScheduledRescan = StringUtils.isNotBlank(rescanTime) && isNowAfter(rescanTime);
                        if (isScheduledRescan) {
                            List<RescanablePath> rootPaths = buildPaths(repo, true);
                            logger.trace("Schedule rescan enabled resources: repo: {}, paths {}", repo, rootPaths);
                            scheduleRepo(repo, rootPaths);
                        }
                    }
                    break;
                }
            }
            return null;
        });
    }
}
Also used : IndyDataException(org.commonjava.indy.data.IndyDataException) RescanablePath(org.commonjava.indy.subsys.prefetch.models.RescanablePath) RemoteRepository(org.commonjava.indy.model.core.RemoteRepository) ChangeSummary(org.commonjava.indy.audit.ChangeSummary) EventMetadata(org.commonjava.maven.galley.event.EventMetadata)

Aggregations

RescanablePath (org.commonjava.indy.subsys.prefetch.models.RescanablePath)6 RemoteRepository (org.commonjava.indy.model.core.RemoteRepository)5 ArrayList (java.util.ArrayList)4 List (java.util.List)3 HashMap (java.util.HashMap)2 StoreResource (org.commonjava.indy.content.StoreResource)2 RescanableResourceWrapper (org.commonjava.indy.subsys.prefetch.models.RescanableResourceWrapper)2 TransferException (org.commonjava.maven.galley.TransferException)2 ConcreteResource (org.commonjava.maven.galley.model.ConcreteResource)2 Map (java.util.Map)1 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)1 ChangeSummary (org.commonjava.indy.audit.ChangeSummary)1 IndyDataException (org.commonjava.indy.data.IndyDataException)1 ArtifactStore (org.commonjava.indy.model.core.ArtifactStore)1 EventMetadata (org.commonjava.maven.galley.event.EventMetadata)1 ListingResult (org.commonjava.maven.galley.model.ListingResult)1 SpecialPathInfo (org.commonjava.maven.galley.model.SpecialPathInfo)1