Skip to content
This repository was archived by the owner on Jul 30, 2024. It is now read-only.

Commit 0fe21b2

Browse files
authored
SubscriptionProcessorJob perf updates (#480)
* MaxConcurrentCalls update. * Test and configuration update * Updated int and prod settings for the ProcessSignature and ValidateCertificate jobs.
1 parent 81f96ad commit 0fe21b2

13 files changed

Lines changed: 49 additions & 13 deletions

File tree

src/Validation.Common.Job/SubcriptionProcessorJob.cs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,18 @@
44
using System;
55
using System.Threading.Tasks;
66
using Autofac;
7+
using Microsoft.Extensions.Configuration;
78
using Microsoft.Extensions.DependencyInjection;
89
using Microsoft.Extensions.Logging;
10+
using Microsoft.Extensions.Options;
911
using NuGet.Services.ServiceBus;
1012

1113
namespace NuGet.Jobs.Validation
1214
{
1315
public abstract class SubcriptionProcessorJob<T> : JsonConfigurationJob
1416
{
17+
private const string SubscriptionProcessorConfigurationSectionName = "ServiceBus";
18+
1519
/// <summary>
1620
/// The maximum amount of time that graceful shutdown can take before the job will
1721
/// forcefully end itself.
@@ -25,10 +29,18 @@ public override async Task Run()
2529
if (processor == null)
2630
{
2731
throw new Exception($"DI container was not set up to produce instances of ISubscriptionProcessor<{typeof(T).Name}>. " +
28-
$"Call SubcriptionProcessorJob<T>.ConfigureDefaultSubscriptionProcessor() or set it up your way.");
32+
$"Call SubcriptionProcessorJob<T>.{nameof(ConfigureDefaultSubscriptionProcessor)}() or set it up your way.");
33+
}
34+
35+
var configuration = _serviceProvider.GetService<IOptionsSnapshot<SubscriptionProcessorConfiguration>>();
36+
37+
if (configuration == null || configuration.Value == null)
38+
{
39+
throw new Exception($"Failed to get the SubscriptionProcessorJob configuration. Call " +
40+
$"SubcriptionProcessorJob<T>.{nameof(SetupDefaultSubscriptionProcessorConfiguration)}() or set it up your way.");
2941
}
3042

31-
processor.Start();
43+
processor.Start(configuration.Value.MaxConcurrentCalls);
3244

3345
// Wait a day, and then shutdown this process so that it is restarted.
3446
await Task.Delay(TimeSpan.FromDays(1));
@@ -56,5 +68,10 @@ protected static void ConfigureDefaultSubscriptionProcessor(ContainerBuilder con
5668
(parameter, context) => context.ResolveKeyed(bindingKey, typeof(IMessageHandler<T>)))
5769
.As<ISubscriptionProcessor<T>>();
5870
}
71+
72+
protected static void SetupDefaultSubscriptionProcessorConfiguration(IServiceCollection services, IConfiguration configuration)
73+
{
74+
services.Configure<SubscriptionProcessorConfiguration>(configuration.GetSection(SubscriptionProcessorConfigurationSectionName));
75+
}
5976
}
6077
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// Copyright (c) .NET Foundation. All rights reserved.
2+
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3+
4+
namespace NuGet.Jobs.Validation
5+
{
6+
public class SubscriptionProcessorConfiguration
7+
{
8+
public int MaxConcurrentCalls { get; set; }
9+
}
10+
}

src/Validation.Common.Job/Validation.Common.Job.csproj

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
<Compile Include="Storage\ValidatorStatusExtensions.cs" />
6363
<Compile Include="SubcriptionProcessorJob.cs" />
6464
<Compile Include="JsonConfigurationJob.cs" />
65+
<Compile Include="SubscriptionProcessorConfiguration.cs" />
6566
<Compile Include="Validation\IValidatorProvider.cs" />
6667
<Compile Include="Validation\ValidatorName.cs" />
6768
<Compile Include="Validation\ValidatorNameAttribute.cs" />
@@ -99,7 +100,7 @@
99100
<Version>2.26.0-master-34394</Version>
100101
</PackageReference>
101102
<PackageReference Include="NuGet.Services.ServiceBus">
102-
<Version>2.26.0-master-34394</Version>
103+
<Version>2.26.0-master-34736</Version>
103104
</PackageReference>
104105
<PackageReference Include="NuGet.Services.Sql">
105106
<Version>2.26.0-master-34394</Version>
@@ -108,7 +109,7 @@
108109
<Version>2.26.0-master-34394</Version>
109110
</PackageReference>
110111
<PackageReference Include="NuGet.Services.Validation">
111-
<Version>2.26.0-master-34584</Version>
112+
<Version>2.26.0-master-34736</Version>
112113
</PackageReference>
113114
<PackageReference Include="NuGetGallery.Core">
114115
<Version>4.4.5-dev-34648</Version>

src/Validation.Common.Job/Validation.Common.Job.nuspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
<dependency id="NuGet.Packaging" version="4.8.0-preview4.5289" />
1919
<dependency id="NuGet.Services.Configuration" version="2.26.0-master-34394" />
2020
<dependency id="NuGet.Services.Logging" version="2.26.0-master-34394" />
21-
<dependency id="NuGet.Services.ServiceBus" version="2.26.0-master-34394" />
21+
<dependency id="NuGet.Services.ServiceBus" version="2.26.0-master-34736" />
2222
<dependency id="NuGet.Services.Sql" version="2.26.0-master-34394" />
2323
<dependency id="NuGet.Services.Storage" version="2.26.0-master-34394" />
24-
<dependency id="NuGet.Services.Validation" version="2.26.0-master-34584" />
24+
<dependency id="NuGet.Services.Validation" version="2.26.0-master-34736" />
2525
<dependency id="NuGetGallery.Core" version="4.4.5-dev-34648" />
2626
<dependency id="Serilog" version="2.5.0" />
2727
<dependency id="System.Net.Http" version="4.3.3" />

src/Validation.PackageSigning.ProcessSignature/Job.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ protected override void ConfigureJobServices(IServiceCollection services, IConfi
2929
{
3030
services.Configure<CertificateStoreConfiguration>(configurationRoot.GetSection(CertificateStoreConfigurationSectionName));
3131
services.Configure<ProcessSignatureConfiguration>(configurationRoot.GetSection(ProcessSignatureConfigurationSectionName));
32+
SetupDefaultSubscriptionProcessorConfiguration(services, configurationRoot);
3233

3334
services.AddTransient<ISubscriptionProcessor<SignatureValidationMessage>, SubscriptionProcessor<SignatureValidationMessage>>();
3435

src/Validation.PackageSigning.ProcessSignature/Settings/dev.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
"ServiceBus": {
99
"ConnectionString": "Endpoint=sb://nugetdev.servicebus.windows.net/;SharedAccessKeyName=extract-and-validate-signature;SharedAccessKey=$$Dev-ServiceBus-SharedAccessKey-Validation-ExtractAndValidatePackageSignature$$",
1010
"TopicPath": "validate-signature",
11-
"SubscriptionName": "extract-and-validate-signature"
11+
"SubscriptionName": "extract-and-validate-signature",
12+
"MaxConcurrentCalls": 10
1213
},
1314
"CertificateStore": {
1415
"ContainerName": "certificates",

src/Validation.PackageSigning.ProcessSignature/Settings/int.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
"ServiceBus": {
99
"ConnectionString": "Endpoint=sb://nugetint.servicebus.windows.net/;SharedAccessKeyName=extract-and-validate-signature;SharedAccessKey=$$Int-ServiceBus-SharedAccessKey-Validation-ExtractAndValidatePackageSignature$$",
1010
"TopicPath": "validate-signature",
11-
"SubscriptionName": "extract-and-validate-signature"
11+
"SubscriptionName": "extract-and-validate-signature",
12+
"MaxConcurrentCalls": 10
1213
},
1314
"CertificateStore": {
1415
"ContainerName": "certificates",

src/Validation.PackageSigning.ProcessSignature/Settings/prod.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
"ServiceBus": {
99
"ConnectionString": "Endpoint=sb://nugetprod.servicebus.windows.net/;SharedAccessKeyName=extract-and-validate-signature;SharedAccessKey=$$Prod-ServiceBus-SharedAccessKey-Validation-ExtractAndValidatePackageSignature$$",
1010
"TopicPath": "validate-signature",
11-
"SubscriptionName": "extract-and-validate-signature"
11+
"SubscriptionName": "extract-and-validate-signature",
12+
"MaxConcurrentCalls": 10
1213
},
1314
"CertificateStore": {
1415
"ContainerName": "certificates",

src/Validation.PackageSigning.ValidateCertificate/Job.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public class Job : SubcriptionProcessorJob<CertificateValidationMessage>
2424
protected override void ConfigureJobServices(IServiceCollection services, IConfigurationRoot configurationRoot)
2525
{
2626
services.Configure<CertificateStoreConfiguration>(configurationRoot.GetSection(CertificateStoreConfigurationSectionName));
27+
SetupDefaultSubscriptionProcessorConfiguration(services, configurationRoot);
2728

2829
services.AddTransient<IBrokeredMessageSerializer<CertificateValidationMessage>, CertificateValidationMessageSerializer>();
2930
services.AddTransient<IMessageHandler<CertificateValidationMessage>, CertificateValidationMessageHandler>();

src/Validation.PackageSigning.ValidateCertificate/Settings/dev.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
"ServiceBus": {
66
"ConnectionString": "Endpoint=sb://nugetdev.servicebus.windows.net/;SharedAccessKeyName=validate-certificate;SharedAccessKey=$$Dev-ServiceBus-SharedAccessKey-Validation-ValidateCertificate$$",
77
"TopicPath": "validate-certificate",
8-
"SubscriptionName": "validate-certificate"
8+
"SubscriptionName": "validate-certificate",
9+
"MaxConcurrentCalls": 10
910
},
1011
"CertificateStore": {
1112
"ContainerName": "certificates",

0 commit comments

Comments
 (0)