Backup: removed BackupServiceNotifier

This commit is contained in:
pavelbannov 2020-08-06 22:20:37 +03:00
parent ffc756f32b
commit 0b31269c8e
4 changed files with 25 additions and 59 deletions

View File

@ -44,22 +44,19 @@ namespace ASC.Data.Backup.Service
private BackupSchedulerService SchedulerService { get; set; }
private BackupWorker BackupWorker { get; set; }
private IConfiguration Configuration { get; set; }
public BackupServiceNotifier BackupServiceNotifier { get; }
public BackupServiceLauncher(
IServiceProvider serviceProvider,
BackupCleanerService cleanerService,
BackupSchedulerService schedulerService,
BackupWorker backupWorker,
IConfiguration configuration,
BackupServiceNotifier backupServiceNotifier)
IConfiguration configuration)
{
ServiceProvider = serviceProvider;
CleanerService = cleanerService;
SchedulerService = schedulerService;
BackupWorker = backupWorker;
Configuration = configuration;
BackupServiceNotifier = backupServiceNotifier;
}
public Task StartAsync(CancellationToken cancellationToken)

View File

@ -31,7 +31,6 @@ using System.Linq;
using System.ServiceModel;
using ASC.Common;
using ASC.Common.Caching;
using ASC.Common.Logging;
using ASC.Common.Utils;
using ASC.Data.Backup.Contracts;
@ -46,63 +45,25 @@ using Newtonsoft.Json;
namespace ASC.Data.Backup.Service
{
public class BackupServiceNotifier
{
public ICacheNotify<BackupProgress> СacheBackupProgress { get; }
public ICache Cache { get; }
public BackupServiceNotifier(ICacheNotify<BackupProgress> сacheBackupProgress)
{
Cache = AscCache.Memory;
СacheBackupProgress = сacheBackupProgress;
СacheBackupProgress.Subscribe((a) =>
{
Cache.Insert(GetCacheKey(a.TenantId, a.BackupProgressEnum), a, DateTime.UtcNow.AddDays(1));
},
CacheNotifyAction.InsertOrUpdate);
}
public BackupProgress GetBackupProgress(int tenantId)
{
return Cache.Get<BackupProgress>(GetCacheKey(tenantId, BackupProgressEnum.Backup));
}
public BackupProgress GetTransferProgress(int tenantID)
{
return Cache.Get<BackupProgress>(GetCacheKey(tenantID, BackupProgressEnum.Transfer));
}
public BackupProgress GetRestoreProgress(int tenantId)
{
return Cache.Get<BackupProgress>(GetCacheKey(tenantId, BackupProgressEnum.Restore));
}
private string GetCacheKey(int tenantId, BackupProgressEnum backupProgressEnum) => $"{backupProgressEnum}backup{tenantId}";
}
public class BackupService : IBackupService
{
private ILog Log { get; set; }
private BackupStorageFactory BackupStorageFactory { get; set; }
private BackupWorker BackupWorker { get; set; }
private BackupRepository BackupRepository { get; }
private BackupServiceNotifier BackupServiceNotifier { get; }
private IConfiguration Configuration { get; }
public BackupService(
IOptionsMonitor<ILog> options,
BackupStorageFactory backupStorageFactory,
BackupWorker backupWorker,
BackupRepository backupRepository,
BackupServiceNotifier backupServiceNotifier,
BackupRepository backupRepository,
IConfiguration configuration)
{
Log = options.CurrentValue;
BackupStorageFactory = backupStorageFactory;
BackupWorker = backupWorker;
BackupRepository = backupRepository;
BackupServiceNotifier = backupServiceNotifier;
Configuration = configuration;
}
@ -210,17 +171,17 @@ namespace ASC.Data.Backup.Service
public BackupProgress GetBackupProgress(int tenantId)
{
return BackupServiceNotifier.GetBackupProgress(tenantId);
return BackupWorker.GetBackupProgress(tenantId);
}
public BackupProgress GetTransferProgress(int tenantId)
{
return BackupServiceNotifier.GetTransferProgress(tenantId);
return BackupWorker.GetTransferProgress(tenantId);
}
public BackupProgress GetRestoreProgress(int tenantId)
{
return BackupServiceNotifier.GetRestoreProgress(tenantId);
return BackupWorker.GetRestoreProgress(tenantId);
}
public string GetTmpFolder()
@ -294,7 +255,6 @@ namespace ASC.Data.Backup.Service
{
if (services.TryAddScoped<BackupService>())
{
services.TryAddSingleton<BackupServiceNotifier>();
return services
.AddBackupWorkerService();
}

View File

@ -130,11 +130,9 @@ namespace ASC.Data.Backup.Service
ProgressQueue.QueueTask((a, b) => item.RunJob(), item);
}
var progress = ToBackupProgress(item);
PublishProgress(item);
PublishProgress(progress);
return progress;
return ToBackupProgress(item);
}
}
@ -164,6 +162,22 @@ namespace ASC.Data.Backup.Service
}
}
public BackupProgress GetTransferProgress(int tenantId)
{
lock (SynchRoot)
{
return ToBackupProgress(ProgressQueue.GetTasks<TransferProgressItem>().FirstOrDefault(t => t.TenantId == tenantId));
}
}
public BackupProgress GetRestoreProgress(int tenantId)
{
lock (SynchRoot)
{
return ToBackupProgress(ProgressQueue.GetTasks<RestoreProgressItem>().FirstOrDefault(t => t.TenantId == tenantId));
}
}
public void ResetBackupError(int tenantId)
{
lock (SynchRoot)
@ -228,6 +242,7 @@ namespace ASC.Data.Backup.Service
}
}
private BackupProgress ToBackupProgress(BaseBackupProgressItem progressItem)
{
if (progressItem == null)
@ -262,12 +277,6 @@ namespace ASC.Data.Backup.Service
internal void PublishProgress(BaseBackupProgressItem progress)
{
progress.PublishChanges();
PublishProgress(ToBackupProgress(progress));
}
internal void PublishProgress(BackupProgress progress)
{
CacheBackupProgress.Publish(progress, CacheNotifyAction.InsertOrUpdate);
}
}

View File

@ -675,7 +675,7 @@ namespace ASC.Web.Core.Users
}
else
{
if (!ResizeQueue.GetTasks().OfType<ResizeWorkerItem>().Any(r => r.GetProperty<string>("key") == key))
if (!ResizeQueue.GetTasks<ResizeWorkerItem>().Any(r => r.GetProperty<string>("key") == key))
{
//Add
ResizeQueue.QueueTask((a, b) => ResizeImage(resizeTask), resizeTask);