diff --git a/common/ASC.Common/Threading/DistributedTaskQueue.cs b/common/ASC.Common/Threading/DistributedTaskQueue.cs index 2a91029294..dbe2954ada 100644 --- a/common/ASC.Common/Threading/DistributedTaskQueue.cs +++ b/common/ASC.Common/Threading/DistributedTaskQueue.cs @@ -322,11 +322,16 @@ namespace ASC.Common.Threading services.TryAdd(); services.TryAdd(); services.TryAdd(); - services.TryAdd(); + + var type = typeof(T); + if (!type.IsAbstract) + { + services.TryAdd(); + } services.TryAddSingleton, ConfigureDistributedTaskQueue>(); - _ = services.Configure(typeof(T).Name, r => + _ = services.Configure(type.Name, r => { r.MaxThreadsCount = maxThreadsCount; //r.errorCount = 1; diff --git a/common/services/ASC.Data.Backup/Service/BackupWorker.cs b/common/services/ASC.Data.Backup/Service/BackupWorker.cs index 7f59f0fafe..90f4abe20c 100644 --- a/common/services/ASC.Data.Backup/Service/BackupWorker.cs +++ b/common/services/ASC.Data.Backup/Service/BackupWorker.cs @@ -73,7 +73,7 @@ namespace ASC.Data.Backup.Service FactoryProgressItem factoryProgressItem) { Log = options.CurrentValue; - ProgressQueue = progressQueue.Get(); + ProgressQueue = progressQueue.Get(); CacheBackupProgress = cacheBackupProgress; FactoryProgressItem = factoryProgressItem; } @@ -314,6 +314,16 @@ namespace ASC.Data.Backup.Service public abstract BackupProgressItemEnum BackupProgressItemEnum { get; } public abstract object Clone(); + + protected ILog Log { get; set; } + + protected IServiceProvider ServiceProvider { get; set; } + + public BaseBackupProgressItem(IOptionsMonitor options, IServiceProvider serviceProvider) + { + Log = options.CurrentValue; + ServiceProvider = serviceProvider; + } } [Transient] @@ -321,6 +331,10 @@ namespace ASC.Data.Backup.Service { private const string ArchiveFormat = "tar.gz"; + public BackupProgressItem(IOptionsMonitor options, IServiceProvider serviceProvider) : base(options, serviceProvider) + { + } + public override BackupProgressItemEnum BackupProgressItemEnum { get => BackupProgressItemEnum.Backup; } private bool IsScheduled { get; set; } @@ -334,14 +348,6 @@ namespace ASC.Data.Backup.Service private string CurrentRegion { get; set; } private Dictionary ConfigPaths { get; set; } private int Limit { get; set; } - private ILog Log { get; set; } - private IServiceProvider ServiceProvider { get; set; } - - public BackupProgressItem(IServiceProvider serviceProvider, IOptionsMonitor options) - { - Log = options.CurrentValue; - ServiceProvider = serviceProvider; - } public void Init(BackupSchedule schedule, bool isScheduled, string tempFolder, int limit, string currentRegion, Dictionary configPaths) { @@ -481,6 +487,10 @@ namespace ASC.Data.Backup.Service [Transient] public class RestoreProgressItem : BaseBackupProgressItem { + public RestoreProgressItem(IOptionsMonitor options, IServiceProvider serviceProvider) : base(options, serviceProvider) + { + } + public override BackupProgressItemEnum BackupProgressItemEnum { get => BackupProgressItemEnum.Restore; } public BackupStorageType StorageType { get; set; } public string StoragePath { get; set; } @@ -490,16 +500,7 @@ namespace ASC.Data.Backup.Service private string CurrentRegion { get; set; } private string UpgradesPath { get; set; } private Dictionary ConfigPaths { get; set; } - private ILog Log { get; set; } - private IServiceProvider ServiceProvider { get; set; } - public RestoreProgressItem( - IOptionsMonitor options, - IServiceProvider serviceProvider) - { - Log = options.CurrentValue; - ServiceProvider = serviceProvider; - } public void Init(StartRestoreRequest request, string tempFolder, string upgradesPath, string currentRegion, Dictionary configPaths) { TenantId = request.TenantId; @@ -628,6 +629,10 @@ namespace ASC.Data.Backup.Service [Transient] public class TransferProgressItem : BaseBackupProgressItem { + public TransferProgressItem(IOptionsMonitor options, IServiceProvider serviceProvider) : base(options, serviceProvider) + { + } + public override BackupProgressItemEnum BackupProgressItemEnum { get => BackupProgressItemEnum.Transfer; } public string TargetRegion { get; set; } public bool TransferMail { get; set; } @@ -638,18 +643,7 @@ namespace ASC.Data.Backup.Service public Dictionary ConfigPaths { get; set; } public string CurrentRegion { get; set; } public int Limit { get; set; } - public ILog Log { get; set; } - private IServiceProvider ServiceProvider { get; set; } - - public TransferProgressItem( - IOptionsMonitor options, - IServiceProvider serviceProvider - ) - { - Log = options.CurrentValue; - ServiceProvider = serviceProvider; - } public void Init( string targetRegion, bool transferMail, diff --git a/common/services/ASC.Data.Backup/Startup.cs b/common/services/ASC.Data.Backup/Startup.cs index 17a24dc5c1..61a5af831e 100644 --- a/common/services/ASC.Data.Backup/Startup.cs +++ b/common/services/ASC.Data.Backup/Startup.cs @@ -50,6 +50,10 @@ namespace ASC.Data.Backup base.ConfigureServices(services); DIHelper.AddDistributedTaskQueueService(1); + + DIHelper.TryAdd(); + DIHelper.TryAdd(); + DIHelper.TryAdd(); DIHelper.TryAdd(); DIHelper.TryAdd();