diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationDynamicInitializer.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationDynamicInitializer.cs index 404d79d8a..9cbb82e1f 100644 --- a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationDynamicInitializer.cs +++ b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/LocalizationDynamicInitializer.cs @@ -16,64 +16,56 @@ public class LocalizationDynamicInitializer : ITransientDependency public ILogger Logger { get; set; } protected IServiceProvider ServiceProvider { get; } - protected IOptions Options { get; } - protected IHostApplicationLifetime ApplicationLifetime { get; } - protected ICancellationTokenProvider CancellationTokenProvider { get; } - protected IStaticLocalizationSaver StaticLocalizationSaver { get; } - - public LocalizationDynamicInitializer( - IServiceProvider serviceProvider, - IOptions options, - ICancellationTokenProvider cancellationTokenProvider, - IStaticLocalizationSaver staticLocalizationSaver) + + public LocalizationDynamicInitializer(IServiceProvider serviceProvider) { ServiceProvider = serviceProvider; - Options = options; - ApplicationLifetime = ServiceProvider.GetService(); - CancellationTokenProvider = cancellationTokenProvider; - StaticLocalizationSaver = staticLocalizationSaver; Logger = NullLogger.Instance; } public virtual Task InitializeAsync(bool runInBackground, CancellationToken cancellationToken = default) { - if (!Options.Value.SaveStaticLocalizationsToDatabase) + var options = ServiceProvider.GetRequiredService>().Value; + + if (!options.SaveStaticLocalizationsToDatabase) { return Task.CompletedTask; } if (runInBackground) { + var applicationLifetime = ServiceProvider.GetService(); Task.Run(async () => { - if (cancellationToken == default && ApplicationLifetime?.ApplicationStopping != null) + if (cancellationToken == default && applicationLifetime?.ApplicationStopping != null) { - cancellationToken = ApplicationLifetime.ApplicationStopping; + cancellationToken = applicationLifetime.ApplicationStopping; } - await ExecuteInitializationAsync(cancellationToken); + await ExecuteInitializationAsync(options, cancellationToken); }, cancellationToken); return Task.CompletedTask; } - return ExecuteInitializationAsync(cancellationToken); + return ExecuteInitializationAsync(options, cancellationToken); } - protected virtual async Task ExecuteInitializationAsync(CancellationToken cancellationToken) + protected virtual async Task ExecuteInitializationAsync(AbpLocalizationManagementOptions options, CancellationToken cancellationToken) { try { - using (CancellationTokenProvider.Use(cancellationToken)) + var cancellationTokenProvider = ServiceProvider.GetRequiredService(); + using (cancellationTokenProvider.Use(cancellationToken)) { - if (CancellationTokenProvider.Token.IsCancellationRequested) + if (cancellationTokenProvider.Token.IsCancellationRequested) { return; } - await SaveStaticLocalizationToDatabaseAsync(cancellationToken); + await SaveStaticLocalizationToDatabaseAsync(options, cancellationToken); - if (CancellationTokenProvider.Token.IsCancellationRequested) + if (cancellationTokenProvider.Token.IsCancellationRequested) { return; } @@ -85,13 +77,15 @@ public class LocalizationDynamicInitializer : ITransientDependency } } - protected virtual async Task SaveStaticLocalizationToDatabaseAsync(CancellationToken cancellationToken) + protected virtual async Task SaveStaticLocalizationToDatabaseAsync(AbpLocalizationManagementOptions options, CancellationToken cancellationToken) { - if (!Options.Value.SaveStaticLocalizationsToDatabase) + if (!options.SaveStaticLocalizationsToDatabase) { return; } + var staticLocalizationSaver = ServiceProvider.GetRequiredService(); + await Policy .Handle(e => e is not OperationCanceledException) .WaitAndRetryAsync( @@ -108,7 +102,7 @@ public class LocalizationDynamicInitializer : ITransientDependency { cancellationToken.ThrowIfCancellationRequested(); - await StaticLocalizationSaver.SaveAsync(); + await staticLocalizationSaver.SaveAsync(); } catch (Exception ex) { diff --git a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/StaticLocalizationSaver.cs b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/StaticLocalizationSaver.cs index daf6ddecb..5fafc7c67 100644 --- a/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/StaticLocalizationSaver.cs +++ b/aspnet-core/modules/localization-management/LINGYUN.Abp.LocalizationManagement.Domain/LINGYUN/Abp/LocalizationManagement/StaticLocalizationSaver.cs @@ -79,7 +79,9 @@ public class StaticLocalizationSaver : IStaticLocalizationSaver, ITransientDepen Logger.LogDebug("Waiting to acquire the distributed lock for saving static localizations..."); - await using var applicationLockHandle = await DistributedLock.TryAcquireAsync(GetApplicationDistributedLockKey()); + await using var applicationLockHandle = await DistributedLock.TryAcquireAsync( + GetApplicationDistributedLockKey(), + TimeSpan.FromSeconds(5)); if (applicationLockHandle == null) { return; diff --git a/aspnet-core/modules/realtime-notifications/LINGYUN.Abp.Notifications.Domain/LINGYUN/Abp/Notifications/NotificationDynamicInitializer.cs b/aspnet-core/modules/realtime-notifications/LINGYUN.Abp.Notifications.Domain/LINGYUN/Abp/Notifications/NotificationDynamicInitializer.cs index 4d8e970a4..18a77bb9f 100644 --- a/aspnet-core/modules/realtime-notifications/LINGYUN.Abp.Notifications.Domain/LINGYUN/Abp/Notifications/NotificationDynamicInitializer.cs +++ b/aspnet-core/modules/realtime-notifications/LINGYUN.Abp.Notifications.Domain/LINGYUN/Abp/Notifications/NotificationDynamicInitializer.cs @@ -15,71 +15,60 @@ public class NotificationDynamicInitializer : ITransientDependency { public ILogger Logger { get; set; } protected IServiceProvider ServiceProvider { get; } - protected IOptions Options { get; } - protected IHostApplicationLifetime ApplicationLifetime { get; } - protected ICancellationTokenProvider CancellationTokenProvider { get; } - protected IDynamicNotificationDefinitionStore DynamicNotificationDefinitionStore { get; } - protected IStaticNotificationSaver StaticNotificationSaver { get; } - - public NotificationDynamicInitializer( - IServiceProvider serviceProvider, - IOptions options, - ICancellationTokenProvider cancellationTokenProvider, - IDynamicNotificationDefinitionStore dynamicNotificationDefinitionStore, - IStaticNotificationSaver staticNotificationSaver) + + public NotificationDynamicInitializer(IServiceProvider serviceProvider) { ServiceProvider = serviceProvider; - Options = options; - CancellationTokenProvider = cancellationTokenProvider; - DynamicNotificationDefinitionStore = dynamicNotificationDefinitionStore; - StaticNotificationSaver = staticNotificationSaver; - ApplicationLifetime = ServiceProvider.GetService(); Logger = NullLogger.Instance; } public virtual Task InitializeAsync(bool runInBackground, CancellationToken cancellationToken = default) { - if (!Options.Value.SaveStaticNotificationsToDatabase && !Options.Value.IsDynamicNotificationsStoreEnabled) + var options = ServiceProvider.GetRequiredService>().Value; + + if (!options.SaveStaticNotificationsToDatabase && !options.IsDynamicNotificationsStoreEnabled) { return Task.CompletedTask; } if (runInBackground) { + var applicationLifetime = ServiceProvider.GetService(); Task.Run(async () => { - if (cancellationToken == default && ApplicationLifetime?.ApplicationStopping != null) + if (cancellationToken == default && applicationLifetime?.ApplicationStopping != null) { - cancellationToken = ApplicationLifetime.ApplicationStopping; + cancellationToken = applicationLifetime.ApplicationStopping; } - await ExecuteInitializationAsync(cancellationToken); + await ExecuteInitializationAsync(options, cancellationToken); }, cancellationToken); return Task.CompletedTask; } - return ExecuteInitializationAsync(cancellationToken); + return ExecuteInitializationAsync(options, cancellationToken); } - protected virtual async Task ExecuteInitializationAsync(CancellationToken cancellationToken) + protected virtual async Task ExecuteInitializationAsync(AbpNotificationsManagementOptions options, CancellationToken cancellationToken) { try { - using (CancellationTokenProvider.Use(cancellationToken)) + var cancellationTokenProvider = ServiceProvider.GetRequiredService(); + using (cancellationTokenProvider.Use(cancellationToken)) { - if (CancellationTokenProvider.Token.IsCancellationRequested) + if (cancellationTokenProvider.Token.IsCancellationRequested) { return; } - await SaveStaticNotificationssToDatabaseAsync(cancellationToken); + await SaveStaticNotificationssToDatabaseAsync(options, cancellationToken); - if (CancellationTokenProvider.Token.IsCancellationRequested) + if (cancellationTokenProvider.Token.IsCancellationRequested) { return; } - await PreCacheDynamicNotificationsAsync(cancellationToken); + await PreCacheDynamicNotificationsAsync(options, cancellationToken); } } catch @@ -88,13 +77,15 @@ public class NotificationDynamicInitializer : ITransientDependency } } - protected virtual async Task SaveStaticNotificationssToDatabaseAsync(CancellationToken cancellationToken) + protected virtual async Task SaveStaticNotificationssToDatabaseAsync(AbpNotificationsManagementOptions options, CancellationToken cancellationToken) { - if (!Options.Value.SaveStaticNotificationsToDatabase) + if (!options.SaveStaticNotificationsToDatabase) { return; } + var staticNotificationSaver = ServiceProvider.GetRequiredService(); + await Policy .Handle(e => e is not OperationCanceledException) .WaitAndRetryAsync( @@ -111,7 +102,7 @@ public class NotificationDynamicInitializer : ITransientDependency { cancellationToken.ThrowIfCancellationRequested(); - await StaticNotificationSaver.SaveAsync(); + await staticNotificationSaver.SaveAsync(); } catch (Exception ex) { @@ -122,18 +113,20 @@ public class NotificationDynamicInitializer : ITransientDependency }, cancellationToken); } - protected virtual async Task PreCacheDynamicNotificationsAsync(CancellationToken cancellationToken) + protected virtual async Task PreCacheDynamicNotificationsAsync(AbpNotificationsManagementOptions options, CancellationToken cancellationToken) { - if (!Options.Value.IsDynamicNotificationsStoreEnabled) + if (!options.IsDynamicNotificationsStoreEnabled) { return; } + var dynamicNotificationDefinitionStore = ServiceProvider.GetRequiredService(); + try { cancellationToken.ThrowIfCancellationRequested(); // Pre-cache notifications, so first request doesn't wait - await DynamicNotificationDefinitionStore.GetGroupsAsync(); + await dynamicNotificationDefinitionStore.GetGroupsAsync(); } catch (Exception ex) { diff --git a/aspnet-core/modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN/Abp/TextTemplating/TextTemplateDynamicInitializer.cs b/aspnet-core/modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN/Abp/TextTemplating/TextTemplateDynamicInitializer.cs index d51ef86ba..835dcb328 100644 --- a/aspnet-core/modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN/Abp/TextTemplating/TextTemplateDynamicInitializer.cs +++ b/aspnet-core/modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN/Abp/TextTemplating/TextTemplateDynamicInitializer.cs @@ -16,71 +16,60 @@ public class TextTemplateDynamicInitializer : ITransientDependency public ILogger Logger { get; set; } protected IServiceProvider ServiceProvider { get; } - protected IOptions Options { get; } - protected IHostApplicationLifetime ApplicationLifetime { get; } - protected ICancellationTokenProvider CancellationTokenProvider { get; } - protected ITemplateDefinitionStore TemplateDefinitionStore { get; } - protected IStaticTemplateSaver StaticTemplateSaver { get; } - - public TextTemplateDynamicInitializer( - IServiceProvider serviceProvider, - IOptions options, - ICancellationTokenProvider cancellationTokenProvider, - ITemplateDefinitionStore templateDefinitionStore, - IStaticTemplateSaver staticTemplateSaver) + + public TextTemplateDynamicInitializer(IServiceProvider serviceProvider) { ServiceProvider = serviceProvider; - Options = options; - ApplicationLifetime = ServiceProvider.GetService(); - CancellationTokenProvider = cancellationTokenProvider; - TemplateDefinitionStore = templateDefinitionStore; - StaticTemplateSaver = staticTemplateSaver; Logger = NullLogger.Instance; } public virtual Task InitializeAsync(bool runInBackground, CancellationToken cancellationToken = default) { - if (!Options.Value.SaveStaticTemplateDefinitionToDatabase && !Options.Value.IsDynamicTemplateDefinitionStoreEnabled) + var options = ServiceProvider.GetRequiredService>().Value; + + if (!options.SaveStaticTemplateDefinitionToDatabase && !options.IsDynamicTemplateDefinitionStoreEnabled) { return Task.CompletedTask; } if (runInBackground) { + var applicationLifetime = ServiceProvider.GetService(); Task.Run(async () => { - if (cancellationToken == default && ApplicationLifetime?.ApplicationStopping != null) + if (cancellationToken == default && applicationLifetime?.ApplicationStopping != null) { - cancellationToken = ApplicationLifetime.ApplicationStopping; + cancellationToken = applicationLifetime.ApplicationStopping; } - await ExecuteInitializationAsync(cancellationToken); + await ExecuteInitializationAsync(options, cancellationToken); }, cancellationToken); return Task.CompletedTask; } - return ExecuteInitializationAsync(cancellationToken); + return ExecuteInitializationAsync(options, cancellationToken); } - protected virtual async Task ExecuteInitializationAsync(CancellationToken cancellationToken) + protected virtual async Task ExecuteInitializationAsync(AbpTextTemplatingCachingOptions options, CancellationToken cancellationToken) { try { - using (CancellationTokenProvider.Use(cancellationToken)) + var cancellationTokenProvider = ServiceProvider.GetRequiredService(); + using (cancellationTokenProvider.Use(cancellationToken)) { - if (CancellationTokenProvider.Token.IsCancellationRequested) + if (cancellationTokenProvider.Token.IsCancellationRequested) { return; } - await SaveStaticTextTemplatesToDatabaseAsync(cancellationToken); + await SaveStaticTextTemplatesToDatabaseAsync(options, cancellationToken); - if (CancellationTokenProvider.Token.IsCancellationRequested) + if (cancellationTokenProvider.Token.IsCancellationRequested) { return; } - await PreCacheDynamicTextTemplatesAsync(cancellationToken); + await PreCacheDynamicTextTemplatesAsync(options, cancellationToken); } } catch @@ -89,13 +78,15 @@ public class TextTemplateDynamicInitializer : ITransientDependency } } - protected virtual async Task SaveStaticTextTemplatesToDatabaseAsync(CancellationToken cancellationToken) + protected virtual async Task SaveStaticTextTemplatesToDatabaseAsync(AbpTextTemplatingCachingOptions options, CancellationToken cancellationToken) { - if (!Options.Value.SaveStaticTemplateDefinitionToDatabase) + if (!options.SaveStaticTemplateDefinitionToDatabase) { return; } + var staticTemplateSaver = ServiceProvider.GetRequiredService(); + await Policy .Handle(e => e is not OperationCanceledException) .WaitAndRetryAsync( @@ -112,8 +103,8 @@ public class TextTemplateDynamicInitializer : ITransientDependency { cancellationToken.ThrowIfCancellationRequested(); - await StaticTemplateSaver.SaveDefinitionTemplateAsync(); - await StaticTemplateSaver.SaveTemplateContentAsync(); + await staticTemplateSaver.SaveDefinitionTemplateAsync(); + await staticTemplateSaver.SaveTemplateContentAsync(); } catch (Exception ex) { @@ -124,19 +115,21 @@ public class TextTemplateDynamicInitializer : ITransientDependency }, cancellationToken); } - protected virtual async Task PreCacheDynamicTextTemplatesAsync(CancellationToken cancellationToken) + protected virtual async Task PreCacheDynamicTextTemplatesAsync(AbpTextTemplatingCachingOptions options, CancellationToken cancellationToken) { - if (!Options.Value.IsDynamicTemplateDefinitionStoreEnabled) + if (!options.IsDynamicTemplateDefinitionStoreEnabled) { return; } + var templateDefinitionStore = ServiceProvider.GetRequiredService(); + try { cancellationToken.ThrowIfCancellationRequested(); // Pre-cache tempte definitions, so first request doesn't wait - await TemplateDefinitionStore.GetAllAsync(); + await templateDefinitionStore.GetAllAsync(); } catch (Exception ex) { diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Domain/LINGYUN/Abp/WebhooksManagement/WebhookDynamicInitializer.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Domain/LINGYUN/Abp/WebhooksManagement/WebhookDynamicInitializer.cs index 644507554..287288bd9 100644 --- a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Domain/LINGYUN/Abp/WebhooksManagement/WebhookDynamicInitializer.cs +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Domain/LINGYUN/Abp/WebhooksManagement/WebhookDynamicInitializer.cs @@ -1,5 +1,4 @@ -using JetBrains.Annotations; -using LINGYUN.Abp.Webhooks; +using LINGYUN.Abp.Webhooks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; @@ -18,72 +17,60 @@ public class WebhookDynamicInitializer : ITransientDependency public ILogger Logger { get; set; } protected IServiceProvider ServiceProvider { get; } - protected IOptions Options { get; } - [CanBeNull] - protected IHostApplicationLifetime ApplicationLifetime { get; } - protected ICancellationTokenProvider CancellationTokenProvider { get; } - protected IDynamicWebhookDefinitionStore DynamicWebhookDefinitionStore { get; } - protected IStaticWebhookSaver StaticWebhookSaver { get; } - - public WebhookDynamicInitializer( - IServiceProvider serviceProvider, - IOptions options, - ICancellationTokenProvider cancellationTokenProvider, - IDynamicWebhookDefinitionStore dynamicWebhookDefinitionStore, - IStaticWebhookSaver staticWebhookSaver) + + public WebhookDynamicInitializer(IServiceProvider serviceProvider) { ServiceProvider = serviceProvider; - Options = options; - ApplicationLifetime = ServiceProvider.GetService(); - CancellationTokenProvider = cancellationTokenProvider; - DynamicWebhookDefinitionStore = dynamicWebhookDefinitionStore; - StaticWebhookSaver = staticWebhookSaver; Logger = NullLogger.Instance; } public virtual Task InitializeAsync(bool runInBackground, CancellationToken cancellationToken = default) { - if (!Options.Value.SaveStaticWebhooksToDatabase && !Options.Value.IsDynamicWebhookStoreEnabled) + var options = ServiceProvider.GetRequiredService>().Value; + + if (!options.SaveStaticWebhooksToDatabase && !options.IsDynamicWebhookStoreEnabled) { return Task.CompletedTask; } if (runInBackground) { + var applicationLifetime = ServiceProvider.GetService(); Task.Run(async () => { - if (cancellationToken == default && ApplicationLifetime?.ApplicationStopping != null) + if (cancellationToken == default && applicationLifetime?.ApplicationStopping != null) { - cancellationToken = ApplicationLifetime.ApplicationStopping; + cancellationToken = applicationLifetime.ApplicationStopping; } - await ExecuteInitializationAsync(cancellationToken); + await ExecuteInitializationAsync(options, cancellationToken); }, cancellationToken); return Task.CompletedTask; } - return ExecuteInitializationAsync(cancellationToken); + return ExecuteInitializationAsync(options, cancellationToken); } - protected virtual async Task ExecuteInitializationAsync(CancellationToken cancellationToken) + protected virtual async Task ExecuteInitializationAsync(WebhooksManagementOptions options, CancellationToken cancellationToken) { try { - using (CancellationTokenProvider.Use(cancellationToken)) + var cancellationTokenProvider = ServiceProvider.GetRequiredService(); + using (cancellationTokenProvider.Use(cancellationToken)) { - if (CancellationTokenProvider.Token.IsCancellationRequested) + if (cancellationTokenProvider.Token.IsCancellationRequested) { return; } - await SaveStaticWebhooksToDatabaseAsync(cancellationToken); + await SaveStaticWebhooksToDatabaseAsync(options, cancellationToken); - if (CancellationTokenProvider.Token.IsCancellationRequested) + if (cancellationTokenProvider.Token.IsCancellationRequested) { return; } - await PreCacheDynamicWebhooksAsync(cancellationToken); + await PreCacheDynamicWebhooksAsync(options, cancellationToken); } } catch @@ -92,13 +79,15 @@ public class WebhookDynamicInitializer : ITransientDependency } } - protected virtual async Task SaveStaticWebhooksToDatabaseAsync(CancellationToken cancellationToken) + protected virtual async Task SaveStaticWebhooksToDatabaseAsync(WebhooksManagementOptions options, CancellationToken cancellationToken) { - if (!Options.Value.SaveStaticWebhooksToDatabase) + if (!options.SaveStaticWebhooksToDatabase) { return; } + var staticWebhookSaver = ServiceProvider.GetRequiredService(); + await Policy .Handle(e => e is not OperationCanceledException) .WaitAndRetryAsync( @@ -115,7 +104,7 @@ public class WebhookDynamicInitializer : ITransientDependency { cancellationToken.ThrowIfCancellationRequested(); - await StaticWebhookSaver.SaveAsync(); + await staticWebhookSaver.SaveAsync(); } catch (Exception ex) { @@ -126,19 +115,21 @@ public class WebhookDynamicInitializer : ITransientDependency }, cancellationToken); } - protected virtual async Task PreCacheDynamicWebhooksAsync(CancellationToken cancellationToken) + protected virtual async Task PreCacheDynamicWebhooksAsync(WebhooksManagementOptions options, CancellationToken cancellationToken) { - if (!Options.Value.IsDynamicWebhookStoreEnabled) + if (!options.IsDynamicWebhookStoreEnabled) { return; } + var dynamicWebhookDefinitionStore = ServiceProvider.GetRequiredService(); + try { cancellationToken.ThrowIfCancellationRequested(); // Pre-cache webhoks, so first request doesn't wait - await DynamicWebhookDefinitionStore.GetGroupsAsync(); + await dynamicWebhookDefinitionStore.GetGroupsAsync(); } catch (Exception ex) {