Browse Source
Refactor dynamic initializer task handling in management modules
pull/24498/head
maliming
1 month ago
No known key found for this signature in database
GPG Key ID: A646B9CB645ECEA4
8 changed files with
14 additions and
72 deletions
-
modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs
-
modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureDynamicInitializer.cs
-
modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo/Abp/FeatureManagement/EntityFrameworkCore/AbpFeatureManagementEntityFrameworkCoreTestModule.cs
-
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs
-
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDynamicInitializer.cs
-
modules/permission-management/test/Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementEntityFrameworkCoreTestModule.cs
-
modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/AbpSettingManagementDomainModule.cs
-
modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingDynamicInitializer.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; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -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) |
|
|
|
|
|
|
|
@ -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)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -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; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -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) |
|
|
|
|
|
|
|
@ -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)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -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; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -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) |
|
|
|
|