Skip to content

Commit 63b8d98

Browse files
committed
Cache github responses and use e-tags on queries
1 parent c2948c7 commit 63b8d98

File tree

16 files changed

+313
-87
lines changed

16 files changed

+313
-87
lines changed

global.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"sdk": {
33
"version": "8.0.303",
4-
"rollForward": "minor"
4+
"rollForward": "major"
55
},
66
"tools": {
77
"dotnet": "8.0.303",

src/Maestro/Maestro.DataProviders/Maestro.DataProviders.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
<ProjectReference Include="..\..\Microsoft.DotNet.Darc\DarcLib\Microsoft.DotNet.DarcLib.csproj" />
1717
<ProjectReference Include="..\Maestro.Common\Maestro.Common.csproj" />
1818
<ProjectReference Include="..\Maestro.Data\Maestro.Data.csproj" />
19+
<PackageReference Include="Microsoft.Azure.StackExchangeRedis" />
1920
<!-- Remove this pin once updated to net8.0 -->
2021
<PackageReference Include="System.IO.Hashing" VersionOverride="8.0.0" />
2122
</ItemGroup>

src/Maestro/Maestro.DataProviders/RemoteFactory.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using Microsoft.DotNet.Internal.Logging;
1212
using Microsoft.Extensions.DependencyInjection;
1313
using Microsoft.Extensions.Logging;
14+
using StackExchange.Redis;
1415

1516
namespace Maestro.DataProviders;
1617

@@ -24,6 +25,7 @@ public class RemoteFactory : IRemoteFactory
2425
private readonly IGitHubTokenProvider _gitHubTokenProvider;
2526
private readonly IAzureDevOpsTokenProvider _azdoTokenProvider;
2627
private readonly IServiceProvider _serviceProvider;
28+
private readonly ConnectionMultiplexer _connection;
2729

2830
public RemoteFactory(
2931
BuildAssetRegistryContext context,
@@ -34,7 +36,8 @@ public RemoteFactory(
3436
OperationManager operations,
3537
IProcessManager processManager,
3638
ILoggerFactory loggerFactory,
37-
IServiceProvider serviceProvider)
39+
IServiceProvider serviceProvider,
40+
ConfigurationOptions options)
3841
{
3942
_operations = operations;
4043
_processManager = processManager;
@@ -44,6 +47,7 @@ public RemoteFactory(
4447
_azdoTokenProvider = azdoTokenProvider;
4548
_cache = memoryCache;
4649
_serviceProvider = serviceProvider;
50+
_connection = ConnectionMultiplexer.Connect(options); //todo replace this with DI injection of IConnectionMultiplexer. We shouldn't do this in non-singleton classes, or even in general
4751
}
4852

4953
public async Task<IRemote> CreateRemoteAsync(string repoUrl)
@@ -87,7 +91,8 @@ private async Task<IRemoteGitRepo> GetRemoteGitClient(string repoUrl)
8791
new Microsoft.DotNet.DarcLib.GitHubTokenProvider(_gitHubTokenProvider),
8892
_processManager,
8993
_loggerFactory.CreateLogger<GitHubClient>(),
90-
_cache.Cache),
94+
_cache.Cache,
95+
_connection),
9196

9297
GitRepoType.AzureDevOps => new AzureDevOpsClient(
9398
_azdoTokenProvider,

src/Microsoft.DotNet.Darc/Darc/Helpers/RemoteFactory.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ private IRemoteGitRepo CreateRemoteGitClient(ICommandLineOptions options, string
5555
_loggerFactory.CreateLogger<GitHubClient>(),
5656
temporaryRepositoryRoot,
5757
// Caching not in use for Darc local client.
58+
null,
5859
null),
5960

6061
GitRepoType.AzureDevOps =>

0 commit comments

Comments
 (0)