private async Task RunPackageValidatorAsync( PackageValidatorContext queuedContext, CancellationToken token) { var feedPackage = queuedContext.Package; Logger.LogInformation("Running PackageValidator on PackageValidatorContext for {PackageId} {PackageVersion}.", feedPackage.Id, feedPackage.Version); var catalogEntries = queuedContext.CatalogEntries; var existingStatus = await _statusService.GetAsync(feedPackage, token); if (catalogEntries != null && existingStatus?.ValidationResult?.CatalogEntries != null && CompareCatalogEntries(catalogEntries, existingStatus.ValidationResult.CatalogEntries)) { // A newer catalog entry of this package has already been validated. Logger.LogInformation("A newer catalog entry of {PackageId} {PackageVersion} has already been processed ({OldCommitTimeStamp} < {NewCommitTimeStamp}).", feedPackage.Id, feedPackage.Version, catalogEntries.Max(c => c.CommitTimeStamp), existingStatus.ValidationResult.CatalogEntries.Max(c => c.CommitTimeStamp)); return; } var context = new PackageValidatorContext(feedPackage, catalogEntries); var result = await _packageValidator.ValidateAsync(context, _client, token); await _notificationService.OnPackageValidationFinishedAsync(result, token); var status = new PackageMonitoringStatus(result); PackageMonitoringStatusAccessConditionHelper.UpdateFromExisting(status, existingStatus); await _statusService.UpdateAsync(status, token); }
private async Task RunPackageValidatorAsync( PackageValidatorContext queuedContext, CancellationToken token) { var feedPackage = queuedContext.Package; Logger.LogInformation("Running PackageValidator on PackageValidatorContext for {PackageId} {PackageVersion}.", feedPackage.Id, feedPackage.Version); IEnumerable <CatalogIndexEntry> catalogEntries = null; if (queuedContext.CatalogEntries != null) { catalogEntries = queuedContext.CatalogEntries; } else { Logger.LogInformation("PackageValidatorContext for {PackageId} {PackageVersion} is missing catalog entries! " + "Attempting to fetch most recent catalog entry from registration.", feedPackage.Id, feedPackage.Version); catalogEntries = await FetchCatalogIndexEntriesFromRegistrationAsync(feedPackage, token); } var existingStatus = await _statusService.GetAsync(feedPackage, token); if (existingStatus?.ValidationResult != null && CompareCatalogEntries(catalogEntries, existingStatus.ValidationResult.CatalogEntries)) { // A newer catalog entry of this package has already been validated. Logger.LogInformation("A newer catalog entry of {PackageId} {PackageVersion} has already been processed ({OldCommitTimeStamp} < {NewCommitTimeStamp}).", feedPackage.Id, feedPackage.Version, catalogEntries.Max(c => c.CommitTimeStamp), existingStatus.ValidationResult.CatalogEntries.Max(c => c.CommitTimeStamp)); return; } var context = new PackageValidatorContext(feedPackage, catalogEntries); var result = await _packageValidator.ValidateAsync(context, _client, token); await _notificationService.OnPackageValidationFinishedAsync(result, token); var status = new PackageMonitoringStatus(result); await _statusService.UpdateAsync(status, token); }