public async Task <bool> HandleAsync(PackageValidationMessageData message) { if (_shutdownNotificationTokenProvider.Token.IsCancellationRequested) { _logger.LogInformation("Service shutdown was requested, will not process new message"); return(false); } var package = _galleryPackageService.FindPackageByIdAndVersionStrict(message.PackageId, message.PackageVersion); if (package == null) { // no package in DB yet. Might have received message a bit early, need to retry later _logger.LogInformation("Did not find information in DB for package {PackageId} {PackageVersion}", message.PackageId, message.PackageVersion); return(false); } using (_logger.BeginScope("Handling message for {PackageId} {PackageVersion} validation set {ValidationSetId}", message.PackageId, message.PackageVersion, message.ValidationTrackingId)) { var validationSet = await _validationSetProvider.GetOrCreateValidationSetAsync(message.ValidationTrackingId, package); await _validationSetProcessor.ProcessValidationsAsync(validationSet, package); await _validationOutcomeProcessor.ProcessValidationOutcomeAsync(validationSet, package); } return(true); }
private bool ShouldSkipScan(INuGetValidationRequest request) { var package = _packageService.FindPackageByIdAndVersionStrict( request.PackageId, request.PackageVersion); if (!_criteriaEvaluator.IsMatch(_configuration.PackageCriteria, package)) { _logger.LogInformation( "The scan for {ValidationId} ({PackageId} {PackageVersion}) was skipped due to package criteria configuration.", request.ValidationId, request.PackageId, request.PackageVersion); return(true); } return(false); }
private bool ShouldSkip(IValidationRequest request) { var package = _packageService.FindPackageByIdAndVersionStrict( request.PackageId, request.PackageVersion); if (!_criteriaEvaluator.IsMatch(_config.Value.PackageCriteria, package)) { // This means the validation has already started. This is acceptable so we should move on. _logger.LogInformation( "The VCS validation for {validationId} ({packageId} {packageVersion}) was skipped due to package criteria configuration.", request.ValidationId, request.PackageId, request.PackageVersion); return(true); } return(false); }
public async Task <bool> HandleAsync(PackageValidationMessageData message) { if (message == null) { throw new ArgumentNullException(nameof(message)); } using (_logger.BeginScope("Handling message for {PackageId} {PackageVersion} validation set {ValidationSetId}", message.PackageId, message.PackageVersion, message.ValidationTrackingId)) { var package = _galleryPackageService.FindPackageByIdAndVersionStrict(message.PackageId, message.PackageVersion); if (package == null) { // no package in DB yet. Might have received message a bit early, need to retry later if (message.DeliveryCount - 1 >= _configs.MissingPackageRetryCount) { _logger.LogWarning("Could not find package {PackageId} {PackageVersion} in DB after {DeliveryCount} tries, dropping message", message.PackageId, message.PackageVersion, message.DeliveryCount); _telemetryService.TrackMissingPackageForValidationMessage( message.PackageId, message.PackageVersion, message.ValidationTrackingId.ToString()); return(true); } else { _logger.LogInformation("Could not find package {PackageId} {PackageVersion} in DB, retrying", message.PackageId, message.PackageVersion); return(false); } } // Immediately halt validation of a soft deleted package. if (package.PackageStatusKey == PackageStatus.Deleted) { _logger.LogWarning( "Package {PackageId} {PackageVersion} (package key {PackageKey}) is soft deleted. Dropping message for validation set {ValidationSetId}.", message.PackageId, message.PackageVersion, package.Key, message.ValidationTrackingId); return(true); } var validationSet = await _validationSetProvider.TryGetOrCreateValidationSetAsync(message.ValidationTrackingId, package); if (validationSet == null) { _logger.LogInformation("The validation request for {PackageId} {PackageVersion} validation set {ValidationSetId} is a duplicate. Discarding.", message.PackageId, message.PackageVersion, message.ValidationTrackingId); return(true); } await _validationSetProcessor.ProcessValidationsAsync(validationSet, package); await _validationOutcomeProcessor.ProcessValidationOutcomeAsync(validationSet, package); } return(true); }
public IValidatingEntity <Package> FindPackageByIdAndVersionStrict(string id, string version) { var p = _galleryEntityService.FindPackageByIdAndVersionStrict(id, version); return(p == null ? null : new PackageValidatingEntity(p)); }
public IEnumerable <SymbolPackage> FindSymbolPackagesByIdAndVersion(string id, string version) { var package = _corePackageService.FindPackageByIdAndVersionStrict(id, version); return(package?.SymbolPackages); }