Backup: fix

This commit is contained in:
pavelbannov 2021-05-19 11:31:50 +03:00
parent b9c52c526e
commit 5d94113e23
3 changed files with 34 additions and 31 deletions

View File

@ -322,11 +322,16 @@ namespace ASC.Common.Threading
services.TryAdd<DistributedTaskCacheNotify>(); services.TryAdd<DistributedTaskCacheNotify>();
services.TryAdd<DistributedTaskQueueOptionsManager>(); services.TryAdd<DistributedTaskQueueOptionsManager>();
services.TryAdd<DistributedTaskQueue>(); services.TryAdd<DistributedTaskQueue>();
services.TryAdd<T>();
var type = typeof(T);
if (!type.IsAbstract)
{
services.TryAdd<T>();
}
services.TryAddSingleton<IConfigureOptions<DistributedTaskQueue>, ConfigureDistributedTaskQueue>(); services.TryAddSingleton<IConfigureOptions<DistributedTaskQueue>, ConfigureDistributedTaskQueue>();
_ = services.Configure<DistributedTaskQueue>(typeof(T).Name, r => _ = services.Configure<DistributedTaskQueue>(type.Name, r =>
{ {
r.MaxThreadsCount = maxThreadsCount; r.MaxThreadsCount = maxThreadsCount;
//r.errorCount = 1; //r.errorCount = 1;

View File

@ -73,7 +73,7 @@ namespace ASC.Data.Backup.Service
FactoryProgressItem factoryProgressItem) FactoryProgressItem factoryProgressItem)
{ {
Log = options.CurrentValue; Log = options.CurrentValue;
ProgressQueue = progressQueue.Get<BackupProgressItem>(); ProgressQueue = progressQueue.Get<BaseBackupProgressItem>();
CacheBackupProgress = cacheBackupProgress; CacheBackupProgress = cacheBackupProgress;
FactoryProgressItem = factoryProgressItem; FactoryProgressItem = factoryProgressItem;
} }
@ -314,6 +314,16 @@ namespace ASC.Data.Backup.Service
public abstract BackupProgressItemEnum BackupProgressItemEnum { get; } public abstract BackupProgressItemEnum BackupProgressItemEnum { get; }
public abstract object Clone(); public abstract object Clone();
protected ILog Log { get; set; }
protected IServiceProvider ServiceProvider { get; set; }
public BaseBackupProgressItem(IOptionsMonitor<ILog> options, IServiceProvider serviceProvider)
{
Log = options.CurrentValue;
ServiceProvider = serviceProvider;
}
} }
[Transient] [Transient]
@ -321,6 +331,10 @@ namespace ASC.Data.Backup.Service
{ {
private const string ArchiveFormat = "tar.gz"; private const string ArchiveFormat = "tar.gz";
public BackupProgressItem(IOptionsMonitor<ILog> options, IServiceProvider serviceProvider) : base(options, serviceProvider)
{
}
public override BackupProgressItemEnum BackupProgressItemEnum { get => BackupProgressItemEnum.Backup; } public override BackupProgressItemEnum BackupProgressItemEnum { get => BackupProgressItemEnum.Backup; }
private bool IsScheduled { get; set; } private bool IsScheduled { get; set; }
@ -334,14 +348,6 @@ namespace ASC.Data.Backup.Service
private string CurrentRegion { get; set; } private string CurrentRegion { get; set; }
private Dictionary<string, string> ConfigPaths { get; set; } private Dictionary<string, string> ConfigPaths { get; set; }
private int Limit { get; set; } private int Limit { get; set; }
private ILog Log { get; set; }
private IServiceProvider ServiceProvider { get; set; }
public BackupProgressItem(IServiceProvider serviceProvider, IOptionsMonitor<ILog> options)
{
Log = options.CurrentValue;
ServiceProvider = serviceProvider;
}
public void Init(BackupSchedule schedule, bool isScheduled, string tempFolder, int limit, string currentRegion, Dictionary<string, string> configPaths) public void Init(BackupSchedule schedule, bool isScheduled, string tempFolder, int limit, string currentRegion, Dictionary<string, string> configPaths)
{ {
@ -481,6 +487,10 @@ namespace ASC.Data.Backup.Service
[Transient] [Transient]
public class RestoreProgressItem : BaseBackupProgressItem public class RestoreProgressItem : BaseBackupProgressItem
{ {
public RestoreProgressItem(IOptionsMonitor<ILog> options, IServiceProvider serviceProvider) : base(options, serviceProvider)
{
}
public override BackupProgressItemEnum BackupProgressItemEnum { get => BackupProgressItemEnum.Restore; } public override BackupProgressItemEnum BackupProgressItemEnum { get => BackupProgressItemEnum.Restore; }
public BackupStorageType StorageType { get; set; } public BackupStorageType StorageType { get; set; }
public string StoragePath { get; set; } public string StoragePath { get; set; }
@ -490,16 +500,7 @@ namespace ASC.Data.Backup.Service
private string CurrentRegion { get; set; } private string CurrentRegion { get; set; }
private string UpgradesPath { get; set; } private string UpgradesPath { get; set; }
private Dictionary<string, string> ConfigPaths { get; set; } private Dictionary<string, string> ConfigPaths { get; set; }
private ILog Log { get; set; }
private IServiceProvider ServiceProvider { get; set; }
public RestoreProgressItem(
IOptionsMonitor<ILog> options,
IServiceProvider serviceProvider)
{
Log = options.CurrentValue;
ServiceProvider = serviceProvider;
}
public void Init(StartRestoreRequest request, string tempFolder, string upgradesPath, string currentRegion, Dictionary<string, string> configPaths) public void Init(StartRestoreRequest request, string tempFolder, string upgradesPath, string currentRegion, Dictionary<string, string> configPaths)
{ {
TenantId = request.TenantId; TenantId = request.TenantId;
@ -628,6 +629,10 @@ namespace ASC.Data.Backup.Service
[Transient] [Transient]
public class TransferProgressItem : BaseBackupProgressItem public class TransferProgressItem : BaseBackupProgressItem
{ {
public TransferProgressItem(IOptionsMonitor<ILog> options, IServiceProvider serviceProvider) : base(options, serviceProvider)
{
}
public override BackupProgressItemEnum BackupProgressItemEnum { get => BackupProgressItemEnum.Transfer; } public override BackupProgressItemEnum BackupProgressItemEnum { get => BackupProgressItemEnum.Transfer; }
public string TargetRegion { get; set; } public string TargetRegion { get; set; }
public bool TransferMail { get; set; } public bool TransferMail { get; set; }
@ -638,18 +643,7 @@ namespace ASC.Data.Backup.Service
public Dictionary<string, string> ConfigPaths { get; set; } public Dictionary<string, string> ConfigPaths { get; set; }
public string CurrentRegion { get; set; } public string CurrentRegion { get; set; }
public int Limit { get; set; } public int Limit { get; set; }
public ILog Log { get; set; }
private IServiceProvider ServiceProvider { get; set; }
public TransferProgressItem(
IOptionsMonitor<ILog> options,
IServiceProvider serviceProvider
)
{
Log = options.CurrentValue;
ServiceProvider = serviceProvider;
}
public void Init( public void Init(
string targetRegion, string targetRegion,
bool transferMail, bool transferMail,

View File

@ -50,6 +50,10 @@ namespace ASC.Data.Backup
base.ConfigureServices(services); base.ConfigureServices(services);
DIHelper.AddDistributedTaskQueueService<BaseBackupProgressItem>(1); DIHelper.AddDistributedTaskQueueService<BaseBackupProgressItem>(1);
DIHelper.TryAdd<BackupProgressItem>();
DIHelper.TryAdd<RestoreProgressItem>();
DIHelper.TryAdd<TransferProgressItem>();
DIHelper.TryAdd<BackupServiceLauncher>(); DIHelper.TryAdd<BackupServiceLauncher>();
DIHelper.TryAdd<BackupController>(); DIHelper.TryAdd<BackupController>();