Browse Source

Refactor dynamic initializer task handling in management modules

pull/24498/head
maliming 1 month ago
parent
commit
b66d595e56
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 7
      modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs
  2. 12
      modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureDynamicInitializer.cs
  3. 14
      modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo/Abp/FeatureManagement/EntityFrameworkCore/AbpFeatureManagementEntityFrameworkCoreTestModule.cs
  4. 7
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs
  5. 12
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDynamicInitializer.cs
  6. 15
      modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementEntityFrameworkCoreTestModule.cs
  7. 7
      modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/AbpSettingManagementDomainModule.cs
  8. 12
      modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingDynamicInitializer.cs

7
modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs

@ -25,7 +25,6 @@ namespace Volo.Abp.FeatureManagement;
public class AbpFeatureManagementDomainModule : AbpModule
{
private readonly CancellationTokenSource _cancellationTokenSource = new();
private Task _initializeDynamicFeaturesTask;
public override void ConfigureServices(ServiceConfigurationContext context)
{
@ -64,7 +63,6 @@ public class AbpFeatureManagementDomainModule : AbpModule
var rootServiceProvider = context.ServiceProvider.GetRequiredService<IRootServiceProvider>();
var initializer = rootServiceProvider.GetRequiredService<FeatureDynamicInitializer>();
await initializer.InitializeAsync(true, _cancellationTokenSource.Token);
_initializeDynamicFeaturesTask = initializer.GetInitializationTask();
}
public override Task OnApplicationShutdownAsync(ApplicationShutdownContext context)
@ -72,9 +70,4 @@ public class AbpFeatureManagementDomainModule : AbpModule
_cancellationTokenSource.Cancel();
return Task.CompletedTask;
}
public Task GetInitializeDynamicFeaturesTask()
{
return _initializeDynamicFeaturesTask ?? Task.CompletedTask;
}
}

12
modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureDynamicInitializer.cs

@ -16,8 +16,6 @@ namespace Volo.Abp.FeatureManagement;
public class FeatureDynamicInitializer : ITransientDependency
{
private Task _initializeDynamicFeaturesTask;
public ILogger<FeatureDynamicInitializer> Logger { get; set; }
protected IServiceProvider ServiceProvider { get; }
@ -56,7 +54,7 @@ public class FeatureDynamicInitializer : ITransientDependency
if (runInBackground)
{
_initializeDynamicFeaturesTask = Task.Run(async () =>
Task.Run(async () =>
{
if (cancellationToken == default && ApplicationLifetime?.ApplicationStopping != null)
{
@ -67,13 +65,7 @@ public class FeatureDynamicInitializer : ITransientDependency
return Task.CompletedTask;
}
_initializeDynamicFeaturesTask = ExecuteInitializationAsync(options, cancellationToken);
return _initializeDynamicFeaturesTask;
}
public virtual Task GetInitializationTask()
{
return _initializeDynamicFeaturesTask ?? Task.CompletedTask;
return ExecuteInitializationAsync(options, cancellationToken);
}
protected virtual async Task ExecuteInitializationAsync(FeatureManagementOptions options, CancellationToken cancellationToken)

14
modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo/Abp/FeatureManagement/EntityFrameworkCore/AbpFeatureManagementEntityFrameworkCoreTestModule.cs

@ -4,6 +4,7 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.Sqlite;
using Volo.Abp.Modularity;
@ -53,15 +54,8 @@ public class AbpFeatureManagementEntityFrameworkCoreTestModule : AbpModule
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
var task = context.ServiceProvider.GetRequiredService<AbpFeatureManagementDomainModule>().GetInitializeDynamicFeaturesTask();
if (!task.IsCompleted)
{
AsyncHelper.RunSync(() => Awaited(task));
}
}
private async static Task Awaited(Task task)
{
await task;
var rootServiceProvider = context.ServiceProvider.GetRequiredService<IRootServiceProvider>();
var initializer = rootServiceProvider.GetRequiredService<FeatureDynamicInitializer>();
AsyncHelper.RunSync(() => initializer.InitializeAsync(false));
}
}

7
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs

@ -26,7 +26,6 @@ namespace Volo.Abp.PermissionManagement;
public class AbpPermissionManagementDomainModule : AbpModule
{
private readonly CancellationTokenSource _cancellationTokenSource = new();
private Task _initializeDynamicPermissionsTask;
public override void ConfigureServices(ServiceConfigurationContext context)
{
@ -50,7 +49,6 @@ public class AbpPermissionManagementDomainModule : AbpModule
var rootServiceProvider = context.ServiceProvider.GetRequiredService<IRootServiceProvider>();
var initializer = rootServiceProvider.GetRequiredService<PermissionDynamicInitializer>();
await initializer.InitializeAsync(true, _cancellationTokenSource.Token);
_initializeDynamicPermissionsTask = initializer.GetInitializationTask();
}
public override Task OnApplicationShutdownAsync(ApplicationShutdownContext context)
@ -58,9 +56,4 @@ public class AbpPermissionManagementDomainModule : AbpModule
_cancellationTokenSource.Cancel();
return Task.CompletedTask;
}
public Task GetInitializeDynamicPermissionsTask()
{
return _initializeDynamicPermissionsTask ?? Task.CompletedTask;
}
}

12
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDynamicInitializer.cs

@ -16,8 +16,6 @@ namespace Volo.Abp.PermissionManagement;
public class PermissionDynamicInitializer : ITransientDependency
{
private Task _initializeDynamicPermissionsTask;
public ILogger<PermissionDynamicInitializer> Logger { get; set; }
protected IServiceProvider ServiceProvider { get; }
@ -56,7 +54,7 @@ public class PermissionDynamicInitializer : ITransientDependency
if (runInBackground)
{
_initializeDynamicPermissionsTask = Task.Run(async () =>
Task.Run(async () =>
{
if (cancellationToken == default && ApplicationLifetime?.ApplicationStopping != null)
{
@ -67,13 +65,7 @@ public class PermissionDynamicInitializer : ITransientDependency
return Task.CompletedTask;
}
_initializeDynamicPermissionsTask = ExecuteInitializationAsync(options, cancellationToken);
return _initializeDynamicPermissionsTask;
}
public virtual Task GetInitializationTask()
{
return _initializeDynamicPermissionsTask ?? Task.CompletedTask;
return ExecuteInitializationAsync(options, cancellationToken);
}
protected virtual async Task ExecuteInitializationAsync(PermissionManagementOptions options, CancellationToken cancellationToken)

15
modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementEntityFrameworkCoreTestModule.cs

@ -9,6 +9,7 @@ using Volo.Abp.Modularity;
using Volo.Abp.Threading;
using Volo.Abp.Uow;
using Microsoft.Data.Sqlite;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.PermissionManagement.EntityFrameworkCore;
@ -56,18 +57,10 @@ public class AbpPermissionManagementEntityFrameworkCoreTestModule : AbpModule
return connection;
}
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
var task = context.ServiceProvider.GetRequiredService<AbpPermissionManagementDomainModule>().GetInitializeDynamicPermissionsTask();
if (!task.IsCompleted)
{
AsyncHelper.RunSync(() => Awaited(task));
}
}
private async static Task Awaited(Task task)
{
await task;
var rootServiceProvider = context.ServiceProvider.GetRequiredService<IRootServiceProvider>();
var initializer = rootServiceProvider.GetRequiredService<PermissionDynamicInitializer>();
AsyncHelper.RunSync(() => initializer.InitializeAsync(false));
}
}

7
modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/AbpSettingManagementDomainModule.cs

@ -25,7 +25,6 @@ namespace Volo.Abp.SettingManagement;
public class AbpSettingManagementDomainModule : AbpModule
{
private readonly CancellationTokenSource _cancellationTokenSource = new();
private Task _initializeDynamicSettingsTask;
public override void ConfigureServices(ServiceConfigurationContext context)
{
@ -58,7 +57,6 @@ public class AbpSettingManagementDomainModule : AbpModule
var rootServiceProvider = context.ServiceProvider.GetRequiredService<IRootServiceProvider>();
var initializer = rootServiceProvider.GetRequiredService<SettingDynamicInitializer>();
await initializer.InitializeAsync(true, _cancellationTokenSource.Token);
_initializeDynamicSettingsTask = initializer.GetInitializationTask();
}
public override Task OnApplicationShutdownAsync(ApplicationShutdownContext context)
@ -66,9 +64,4 @@ public class AbpSettingManagementDomainModule : AbpModule
_cancellationTokenSource.Cancel();
return Task.CompletedTask;
}
public Task GetInitializeDynamicSettingsTask()
{
return _initializeDynamicSettingsTask ?? Task.CompletedTask;
}
}

12
modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingDynamicInitializer.cs

@ -16,8 +16,6 @@ namespace Volo.Abp.SettingManagement;
public class SettingDynamicInitializer : ITransientDependency
{
private Task _initializeDynamicSettingsTask;
public ILogger<SettingDynamicInitializer> Logger { get; set; }
protected IServiceProvider ServiceProvider { get; }
@ -56,7 +54,7 @@ public class SettingDynamicInitializer : ITransientDependency
if (runInBackground)
{
_initializeDynamicSettingsTask = Task.Run(async () =>
Task.Run(async () =>
{
if (cancellationToken == default && ApplicationLifetime?.ApplicationStopping != null)
{
@ -68,13 +66,7 @@ public class SettingDynamicInitializer : ITransientDependency
return Task.CompletedTask;
}
_initializeDynamicSettingsTask = ExecuteInitializationAsync(options, cancellationToken);
return _initializeDynamicSettingsTask;
}
public virtual Task GetInitializationTask()
{
return _initializeDynamicSettingsTask ?? Task.CompletedTask;
return ExecuteInitializationAsync(options, cancellationToken);
}
protected virtual async Task ExecuteInitializationAsync(SettingManagementOptions options, CancellationToken cancellationToken)

Loading…
Cancel
Save