Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion src/Core/Configurations/RuntimeConfigProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ namespace Azure.DataApiBuilder.Core.Configurations;
/// should not load the config directly, or maintain a reference to it, so that we can do hot-reloading by replacing
/// the config that is available from this type.
/// </remarks>
public class RuntimeConfigProvider
public class RuntimeConfigProvider : IDisposable
Comment thread
RubenCerna2079 marked this conversation as resolved.
{
public delegate Task<bool> RuntimeConfigLoadedHandler(RuntimeConfigProvider sender, RuntimeConfig config);

Expand All @@ -46,6 +46,7 @@ public class RuntimeConfigProvider
private RuntimeConfigLoader _configLoader;
private DabChangeToken _changeToken = new();
private readonly IDisposable _changeTokenRegistration;
private bool _disposed;

public RuntimeConfigProvider(RuntimeConfigLoader runtimeConfigLoader)
{
Expand Down Expand Up @@ -89,6 +90,12 @@ public IChangeToken GetChangeToken()
/// </summary>
public void Dispose()
{
if (_disposed)
{
return;
}

_disposed = true;
_changeTokenRegistration.Dispose();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ public static async Task<IHost> CreateWebHost(
.AddEasyAuthAuthentication(easyAuthProvider);
}

services.AddSingleton(runtimeConfigProvider);
services.AddSingleton<RuntimeConfigProvider>(sp => runtimeConfigProvider);

// https://github.com/dotnet/aspnetcore/issues/53332#issuecomment-2091861884
// AddRouting() adds required services that .NET8 does not add by default
Expand Down Expand Up @@ -179,7 +179,7 @@ public static async Task<IHost> CreateWebHostCustomIssuer(SecurityKey key)
};
});
services.AddAuthorization();
services.AddSingleton(runtimeConfigProvider);
services.AddSingleton<RuntimeConfigProvider>(sp => runtimeConfigProvider);
})
.ConfigureLogging(o =>
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@ private static async Task<IHost> CreateWebHostCustomIssuer(SecurityKey key)
};
});
services.AddAuthorization();
services.AddSingleton(runtimeConfigProvider);
services.AddSingleton<RuntimeConfigProvider>(sp => runtimeConfigProvider);
})
.ConfigureLogging(o =>
{
Expand Down
4 changes: 2 additions & 2 deletions src/Service.Tests/CosmosTests/TestBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -174,8 +174,8 @@ protected WebApplicationFactory<Startup> SetupTestApplicationFactory()
_ = builder.ConfigureTestServices(services =>
{
services.AddSingleton<IFileSystem>(fileSystem);
services.AddSingleton(loader);
services.AddSingleton(provider);
services.AddSingleton<FileSystemRuntimeConfigLoader>(sp => loader);
services.AddSingleton<RuntimeConfigProvider>(sp => provider);
services.AddSingleton(authorizationResolverCosmos);
});
});
Expand Down
2 changes: 1 addition & 1 deletion src/Service.Tests/Mcp/AggregateRecordsToolTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -665,7 +665,7 @@ private static IServiceProvider CreateServiceProvider(RuntimeConfig config)
ServiceCollection services = new();

RuntimeConfigProvider configProvider = TestHelper.GenerateInMemoryRuntimeConfigProvider(config);
services.AddSingleton(configProvider);
services.AddSingleton<RuntimeConfigProvider>(sp => configProvider);

Mock<IAuthorizationResolver> mockAuthResolver = new();
mockAuthResolver.Setup(x => x.IsValidRoleContext(It.IsAny<HttpContext>())).Returns(true);
Expand Down
2 changes: 1 addition & 1 deletion src/Service.Tests/Mcp/DescribeEntitiesFilteringTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -457,7 +457,7 @@ private static IServiceProvider CreateServiceProvider(RuntimeConfig config)

// Use shared test helper to create RuntimeConfigProvider
RuntimeConfigProvider configProvider = TestHelper.GenerateInMemoryRuntimeConfigProvider(config);
services.AddSingleton(configProvider);
services.AddSingleton<RuntimeConfigProvider>(sp => configProvider);

// Mock IAuthorizationResolver
Mock<IAuthorizationResolver> mockAuthResolver = new();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -447,7 +447,7 @@ private static IServiceProvider CreateServiceProvider(RuntimeConfig config)
ServiceCollection services = new();

RuntimeConfigProvider configProvider = TestHelper.GenerateInMemoryRuntimeConfigProvider(config);
services.AddSingleton(configProvider);
services.AddSingleton<RuntimeConfigProvider>(sp => configProvider);

Mock<IAuthorizationResolver> mockAuthResolver = new();
mockAuthResolver.Setup(x => x.IsValidRoleContext(It.IsAny<HttpContext>())).Returns(true);
Expand Down
2 changes: 1 addition & 1 deletion src/Service.Tests/Mcp/McpQueryTimeoutTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ private static IServiceProvider CreateServiceProviderWithConfig(RuntimeConfig co
{
ServiceCollection services = new();
RuntimeConfigProvider configProvider = TestHelper.GenerateInMemoryRuntimeConfigProvider(config);
services.AddSingleton(configProvider);
services.AddSingleton<RuntimeConfigProvider>(sp => configProvider);
services.AddLogging();
return services.BuildServiceProvider();
}
Expand Down
2 changes: 1 addition & 1 deletion src/Service.Tests/SqlTests/SqlTestBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ protected async static Task InitializeTestFixture(
builder.ConfigureTestServices(services =>
{
services.AddHttpContextAccessor();
services.AddSingleton(runtimeConfigProvider);
services.AddSingleton<RuntimeConfigProvider>(sp => runtimeConfigProvider);
services.AddSingleton(_gqlFilterParser);
services.AddSingleton<IQueryEngine>(implementationFactory: serviceProvider =>
{
Expand Down
2 changes: 1 addition & 1 deletion src/Service/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ public void ConfigureServices(IServiceCollection services)

services.AddSingleton(fileSystem);
services.AddSingleton<FileSystemRuntimeConfigLoader>(sp => configLoader);
services.AddSingleton(configProvider);
services.AddSingleton<RuntimeConfigProvider>(sp => configProvider);

bool runtimeConfigAvailable = configProvider.TryGetConfig(out RuntimeConfig? runtimeConfig);

Expand Down
Loading