refactoring DistributedTask. replace return value from string to dynamic for indexer
This commit is contained in:
parent
90623263e9
commit
2370f7bad5
@ -24,6 +24,8 @@
|
||||
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
||||
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
|
||||
using JsonSerializer = System.Text.Json.JsonSerializer;
|
||||
|
||||
namespace ASC.Common.Threading;
|
||||
|
||||
[ProtoContract(IgnoreUnknownSubTypes = true)]
|
||||
@ -46,7 +48,7 @@ public class DistributedTask
|
||||
|
||||
[ProtoMember(3)]
|
||||
public DistributedTaskStatus Status { get; set; }
|
||||
|
||||
|
||||
public Exception Exception
|
||||
{
|
||||
get => new Exception(_exeption);
|
||||
@ -61,7 +63,7 @@ public class DistributedTask
|
||||
_exeption = String.Empty;
|
||||
_props = new Dictionary<string, string>();
|
||||
}
|
||||
|
||||
|
||||
public void PublishChanges()
|
||||
{
|
||||
if (Publication == null)
|
||||
@ -72,20 +74,52 @@ public class DistributedTask
|
||||
Publication(this);
|
||||
}
|
||||
|
||||
public string this[string propName]
|
||||
[Obsolete("GetProperty<T> is deprecated, please use indexer this[propName] instead.")]
|
||||
public T GetProperty<T>(string propName)
|
||||
{
|
||||
if (!_props.TryGetValue(propName, out var propValue))
|
||||
{
|
||||
return default;
|
||||
}
|
||||
|
||||
return JsonSerializer.Deserialize<T>(propValue);
|
||||
}
|
||||
|
||||
[Obsolete("SetProperty is deprecated, please use indexer this[propName] = propValue instead.")]
|
||||
public void SetProperty(string propName, object propValue)
|
||||
{
|
||||
_props[propName] = JsonSerializer.Serialize(propValue);
|
||||
}
|
||||
|
||||
public dynamic this[string propName]
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!_props.TryGetValue(propName, out var propValue))
|
||||
{
|
||||
throw new ArgumentException($"Unknown propery {propName}. You must init the property before used.");
|
||||
}
|
||||
|
||||
if (int.TryParse(propValue, out var resultAsInt))
|
||||
{
|
||||
return resultAsInt;
|
||||
}
|
||||
|
||||
if (bool.TryParse(propValue, out var resultAsBool))
|
||||
{
|
||||
return resultAsBool;
|
||||
}
|
||||
|
||||
return _props[propName];
|
||||
}
|
||||
set
|
||||
{
|
||||
_props[propName] = value;
|
||||
_props[propName] = Convert.ToString(value);
|
||||
}
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return Id.GetHashCode();
|
||||
return Id.GetHashCode();
|
||||
}
|
||||
}
|
@ -214,11 +214,18 @@ public class DistributedTaskQueue
|
||||
|
||||
queueTasks = queueTasks.FindAll(x => x.Id != id);
|
||||
|
||||
using var ms = new MemoryStream();
|
||||
if (queueTasks.Count == 0)
|
||||
{
|
||||
_distributedCache.Remove(_name);
|
||||
}
|
||||
else
|
||||
{
|
||||
using var ms = new MemoryStream();
|
||||
|
||||
Serializer.Serialize(ms, queueTasks);
|
||||
Serializer.Serialize(ms, queueTasks);
|
||||
|
||||
_distributedCache.Set(_name, ms.ToArray());
|
||||
_distributedCache.Set(_name, ms.ToArray());
|
||||
}
|
||||
|
||||
_logger.TraceFormat("DequeueTask '{DistributedTaskId}' by instanse id '{InstanceId}'", id, InstanceId);
|
||||
|
||||
|
@ -1,14 +1,6 @@
|
||||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using ASC.Core.Common.Hosting.Interfaces;
|
||||
|
||||
using ASC.Common;
|
||||
using ASC.Common.Logging;
|
||||
using ASC.Core.Common.Hosting.Interfaces;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace ASC.Core.Common.Hosting;
|
||||
|
||||
|
@ -42,28 +42,21 @@ public class BackupProgressItem : BaseBackupProgressItem
|
||||
private Dictionary<string, string> _configPaths;
|
||||
private int _limit;
|
||||
|
||||
private readonly TenantManager _tenantManager;
|
||||
private readonly BackupStorageFactory _backupStorageFactory;
|
||||
private readonly BackupRepository _backupRepository;
|
||||
private readonly BackupPortalTask _backupPortalTask;
|
||||
private TenantManager _tenantManager;
|
||||
private BackupStorageFactory _backupStorageFactory;
|
||||
private BackupRepository _backupRepository;
|
||||
private BackupPortalTask _backupPortalTask;
|
||||
|
||||
private readonly CoreBaseSettings _coreBaseSettings;
|
||||
private readonly NotifyHelper _notifyHelper;
|
||||
|
||||
public BackupProgressItem(
|
||||
ILog logger,
|
||||
TenantManager tenantManager,
|
||||
BackupStorageFactory backupStorageFactory,
|
||||
BackupRepository backupRepository,
|
||||
BackupPortalTask backupPortalTask,
|
||||
IServiceScopeFactory serviceProvider,
|
||||
CoreBaseSettings coreBaseSettings,
|
||||
NotifyHelper notifyHelper)
|
||||
: base(logger)
|
||||
: base(logger, serviceProvider)
|
||||
{
|
||||
_tenantManager = tenantManager;
|
||||
_backupStorageFactory = backupStorageFactory;
|
||||
_backupRepository = backupRepository;
|
||||
_backupPortalTask = backupPortalTask;
|
||||
_coreBaseSettings = coreBaseSettings;
|
||||
_notifyHelper = notifyHelper;
|
||||
}
|
||||
@ -105,6 +98,13 @@ public class BackupProgressItem : BaseBackupProgressItem
|
||||
Thread.CurrentThread.Priority = ThreadPriority.BelowNormal;
|
||||
}
|
||||
|
||||
using var scope = _serviceScopeProvider.CreateScope();
|
||||
|
||||
_tenantManager = scope.ServiceProvider.GetService<TenantManager>();
|
||||
_backupStorageFactory = scope.ServiceProvider.GetService<BackupStorageFactory>();
|
||||
_backupRepository = scope.ServiceProvider.GetService<BackupRepository>();
|
||||
_backupPortalTask = scope.ServiceProvider.GetService<BackupPortalTask>();
|
||||
|
||||
var dateTime = _coreBaseSettings.Standalone ? DateTime.Now : DateTime.UtcNow;
|
||||
var backupName = string.Format("{0}_{1:yyyy-MM-dd_HH-mm-ss}.{2}", _tenantManager.GetTenant(TenantId).Alias, dateTime, ArchiveFormat);
|
||||
|
||||
|
@ -30,14 +30,14 @@ public abstract class BaseBackupProgressItem : DistributedTaskProgress
|
||||
private int? _tenantId;
|
||||
private BackupProgressItemEnum? _backupProgressItemEnum;
|
||||
private string _link;
|
||||
|
||||
|
||||
public int TenantId
|
||||
{
|
||||
get => _tenantId ?? Convert.ToInt32(this[nameof(_tenantId)]);
|
||||
get => _tenantId ?? this[nameof(_tenantId)];
|
||||
set
|
||||
{
|
||||
_tenantId = value;
|
||||
this[nameof(_tenantId)] = value.ToString();
|
||||
this[nameof(_tenantId)] = value;
|
||||
}
|
||||
}
|
||||
|
||||
@ -58,21 +58,27 @@ public abstract class BaseBackupProgressItem : DistributedTaskProgress
|
||||
{
|
||||
get
|
||||
{
|
||||
return _backupProgressItemEnum ?? (BackupProgressItemEnum)Convert.ToInt32(this[(nameof(_backupProgressItemEnum))]);
|
||||
return _backupProgressItemEnum ?? (BackupProgressItemEnum)this[nameof(_backupProgressItemEnum)];
|
||||
}
|
||||
protected set
|
||||
{
|
||||
_backupProgressItemEnum = value;
|
||||
|
||||
this[nameof(_backupProgressItemEnum)] = Convert.ToString((int)value);
|
||||
this[nameof(_backupProgressItemEnum)] = (int)value;
|
||||
}
|
||||
}
|
||||
|
||||
protected ILog Logger { get; set; }
|
||||
protected IServiceScopeFactory _serviceScopeProvider;
|
||||
|
||||
protected BaseBackupProgressItem(ILog logger)
|
||||
protected BaseBackupProgressItem(ILog logger, IServiceScopeFactory serviceScopeFactory)
|
||||
{
|
||||
Logger = logger;
|
||||
_serviceScopeProvider = serviceScopeFactory;
|
||||
|
||||
this[nameof(_tenantId)] = 0;
|
||||
this[nameof(_link)] = "";
|
||||
this[nameof(_backupProgressItemEnum)] = 0;
|
||||
}
|
||||
|
||||
public abstract object Clone();
|
||||
|
@ -28,10 +28,10 @@ namespace ASC.Data.Backup.Services;
|
||||
[Transient]
|
||||
public class RestoreProgressItem : BaseBackupProgressItem
|
||||
{
|
||||
private readonly TenantManager _tenantManager;
|
||||
private readonly BackupStorageFactory _backupStorageFactory;
|
||||
private TenantManager _tenantManager;
|
||||
private BackupStorageFactory _backupStorageFactory;
|
||||
private readonly NotifyHelper _notifyHelper;
|
||||
private readonly BackupRepository _backupRepository;
|
||||
private BackupRepository _backupRepository;
|
||||
private readonly RestorePortalTask _restorePortalTask;
|
||||
private readonly CoreBaseSettings _coreBaseSettings;
|
||||
|
||||
@ -41,18 +41,15 @@ public class RestoreProgressItem : BaseBackupProgressItem
|
||||
|
||||
public RestoreProgressItem(
|
||||
ILog logger,
|
||||
TenantManager tenantManager,
|
||||
BackupStorageFactory backupStorageFactory,
|
||||
IServiceScopeFactory serviceScopeFactory,
|
||||
NotifyHelper notifyHelper,
|
||||
BackupRepository backupRepository,
|
||||
CoreBaseSettings coreBaseSettings)
|
||||
: base(logger)
|
||||
: base(logger, serviceScopeFactory)
|
||||
{
|
||||
_tenantManager = tenantManager;
|
||||
_backupStorageFactory = backupStorageFactory;
|
||||
|
||||
_notifyHelper = notifyHelper;
|
||||
_coreBaseSettings = coreBaseSettings;
|
||||
_backupRepository = backupRepository;
|
||||
|
||||
BackupProgressItemEnum = BackupProgressItemEnum.Restore;
|
||||
}
|
||||
|
||||
@ -82,6 +79,13 @@ public class RestoreProgressItem : BaseBackupProgressItem
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
using var scope = _serviceScopeProvider.CreateScope();
|
||||
|
||||
_tenantManager = scope.ServiceProvider.GetService<TenantManager>();
|
||||
_backupStorageFactory = scope.ServiceProvider.GetService<BackupStorageFactory>();
|
||||
_backupRepository = scope.ServiceProvider.GetService<BackupRepository>();
|
||||
|
||||
tenant = _tenantManager.GetTenant(TenantId);
|
||||
_tenantManager.SetCurrentTenant(tenant);
|
||||
_notifyHelper.SendAboutRestoreStarted(tenant, Notify);
|
||||
|
@ -31,20 +31,17 @@ namespace ASC.Data.Backup.Services;
|
||||
[Transient]
|
||||
public class TransferProgressItem : BaseBackupProgressItem
|
||||
{
|
||||
private readonly TenantManager _tenantManager;
|
||||
private TenantManager _tenantManager;
|
||||
private readonly NotifyHelper _notifyHelper;
|
||||
private readonly TransferPortalTask _transferPortalTask;
|
||||
private TransferPortalTask _transferPortalTask;
|
||||
|
||||
public TransferProgressItem(
|
||||
ILog logger,
|
||||
TenantManager tenantManager,
|
||||
NotifyHelper notifyHelper,
|
||||
TransferPortalTask transferPortalTask) :
|
||||
base(logger)
|
||||
IServiceScopeFactory serviceScopeFactory,
|
||||
NotifyHelper notifyHelper) :
|
||||
base(logger, serviceScopeFactory)
|
||||
{
|
||||
_tenantManager = tenantManager;
|
||||
_notifyHelper = notifyHelper;
|
||||
_transferPortalTask = transferPortalTask;
|
||||
BackupProgressItemEnum = BackupProgressItemEnum.Transfer;
|
||||
}
|
||||
|
||||
@ -85,6 +82,11 @@ public class TransferProgressItem : BaseBackupProgressItem
|
||||
|
||||
try
|
||||
{
|
||||
using var scope = _serviceScopeProvider.CreateScope();
|
||||
_tenantManager = scope.ServiceProvider.GetService<TenantManager>();
|
||||
_transferPortalTask = scope.ServiceProvider.GetService<TransferPortalTask>();
|
||||
|
||||
|
||||
_notifyHelper.SendAboutTransferStart(tenant, TargetRegion, Notify);
|
||||
var transferProgressItem = _transferPortalTask;
|
||||
transferProgressItem.Init(TenantId, ConfigPaths[CurrentRegion], ConfigPaths[TargetRegion], Limit, TempFolder);
|
||||
|
@ -24,6 +24,7 @@
|
||||
*/
|
||||
|
||||
using ASC.Common.Threading;
|
||||
using ASC.Data.Backup.Tasks;
|
||||
|
||||
namespace ASC.Data.Backup.BackgroundTasks;
|
||||
|
||||
@ -49,6 +50,8 @@ public class Startup : BaseStartup
|
||||
DIHelper.TryAdd<RestoreProgressItem>();
|
||||
DIHelper.TryAdd<TransferProgressItem>();
|
||||
|
||||
DIHelper.TryAdd<BackupPortalTask>();
|
||||
|
||||
DIHelper.TryAdd<BackupWorkerService>();
|
||||
|
||||
NotifyConfigurationExtension.Register(DIHelper);
|
||||
|
@ -117,8 +117,8 @@ public class ReportState
|
||||
task["fileName"],
|
||||
task["tmpFileName"],
|
||||
task["script"],
|
||||
Convert.ToInt32(task["reportType"]),
|
||||
(ReportOrigin)Convert.ToInt32(task["reportOrigin"]),
|
||||
task["reportType"],
|
||||
(ReportOrigin)task["reportOrigin"],
|
||||
null,
|
||||
null,
|
||||
tenantId,
|
||||
@ -127,8 +127,8 @@ public class ReportState
|
||||
return new ReportState(null, data, httpContextAccessor)
|
||||
{
|
||||
Id = task["id"],
|
||||
FileId = Convert.ToInt32(task["fileId"]),
|
||||
Status = (ReportStatus)Convert.ToInt32(task["status"]),
|
||||
FileId = task["fileId"],
|
||||
Status = (ReportStatus)task["status"],
|
||||
Exception = task["exception"]
|
||||
};
|
||||
|
||||
@ -238,10 +238,10 @@ public class ReportState
|
||||
TaskInfo["id"] = Id;
|
||||
TaskInfo["fileName"] = FileName;
|
||||
TaskInfo["tmpFileName"] = TmpFileName;
|
||||
TaskInfo["reportType"] = Convert.ToString(ReportType);
|
||||
TaskInfo["fileId"] = Convert.ToString(FileId);
|
||||
TaskInfo["status"] = Convert.ToString((int)Status);
|
||||
TaskInfo["reportOrigin"] = Convert.ToString((int)Origin);
|
||||
TaskInfo["reportType"] = ReportType;
|
||||
TaskInfo["fileId"] = FileId;
|
||||
TaskInfo["status"] = (int)Status;
|
||||
TaskInfo["reportOrigin"] = (int)Origin;
|
||||
TaskInfo["exception"] = Exception;
|
||||
}
|
||||
}
|
||||
@ -291,7 +291,7 @@ public class DocbuilderReportsUtility
|
||||
}
|
||||
|
||||
var result = ReportState.FromTask(task, httpContextAccessor, tenantId, userId);
|
||||
var status = (ReportStatus)Convert.ToInt32(task["status"]);
|
||||
var status = (ReportStatus)task["status"];
|
||||
|
||||
if ((int)status > 1)
|
||||
{
|
||||
|
@ -114,7 +114,7 @@ class FileDownloadOperation : ComposeFileOperation<FileDownloadOperationData<str
|
||||
Error = error2;
|
||||
}
|
||||
|
||||
SuccessProcessed = Convert.ToInt32(thirdpartyTask[Process]) + Convert.ToInt32(daoTask[Process]);
|
||||
SuccessProcessed = thirdpartyTask[Process] + daoTask[Process];
|
||||
|
||||
var progressSteps = ThirdPartyOperation.Total + DaoOperation.Total + 1;
|
||||
|
||||
@ -122,7 +122,7 @@ class FileDownloadOperation : ComposeFileOperation<FileDownloadOperationData<str
|
||||
|
||||
base.FillDistributedTask();
|
||||
|
||||
TaskInfo[Progress] = progress.ToString();
|
||||
TaskInfo[Progress] = progress;
|
||||
TaskInfo.PublishChanges();
|
||||
}
|
||||
}
|
||||
|
@ -60,6 +60,16 @@ public abstract class FileOperation : DistributedTask
|
||||
Culture = Thread.CurrentThread.CurrentCulture.Name;
|
||||
|
||||
TaskInfo = new DistributedTask();
|
||||
|
||||
TaskInfo[Owner] = (new Guid()).ToString();
|
||||
TaskInfo[OpType] = 0;
|
||||
TaskInfo[Src] = "";
|
||||
TaskInfo[Progress] = 0;
|
||||
TaskInfo[Res] = "";
|
||||
TaskInfo[Err] = "";
|
||||
TaskInfo[Process] = 0;
|
||||
TaskInfo[Finish] = false;
|
||||
TaskInfo[Hold] = false; ;
|
||||
}
|
||||
|
||||
public virtual DistributedTask GetDistributedTask()
|
||||
@ -74,13 +84,13 @@ public abstract class FileOperation : DistributedTask
|
||||
{
|
||||
var progress = Total != 0 ? 100 * Processed / Total : 0;
|
||||
|
||||
TaskInfo[OpType] = Convert.ToString((int)OperationType);
|
||||
TaskInfo[Owner] = ((IAccount)(Principal ?? Thread.CurrentPrincipal).Identity).ID.ToString();
|
||||
TaskInfo[Progress] = Convert.ToString(progress < 100 ? progress : 100);
|
||||
TaskInfo[Res] = Result;
|
||||
TaskInfo[OpType] = (int)OperationType;
|
||||
TaskInfo[Owner] = ((IAccount)(Principal ?? Thread.CurrentPrincipal).Identity).ID.ToString();
|
||||
TaskInfo[Progress] = progress < 100 ? progress : 100;
|
||||
TaskInfo[Res] = Result;
|
||||
TaskInfo[Err] = Error;
|
||||
TaskInfo[Process] = SuccessProcessed.ToString();
|
||||
TaskInfo[Hold] = HoldResult.ToString();
|
||||
TaskInfo[Process] = SuccessProcessed;
|
||||
TaskInfo[Hold] = HoldResult;
|
||||
}
|
||||
|
||||
public abstract Task RunJobAsync(DistributedTask _, CancellationToken cancellationToken);
|
||||
@ -154,26 +164,15 @@ internal class ComposeFileOperation<T1, T2> : FileOperation
|
||||
Result = status2;
|
||||
}
|
||||
|
||||
bool? finished1 = null;
|
||||
bool? finished2 = null;
|
||||
bool finished1 = thirdpartyTask[Finish];
|
||||
bool finished2 = daoTask[Finish];
|
||||
|
||||
if (bool.TryParse(thirdpartyTask[Finish], out var fb1))
|
||||
if (finished1 && finished2)
|
||||
{
|
||||
finished1 = fb1;
|
||||
TaskInfo[Finish] = true;
|
||||
}
|
||||
|
||||
if (bool.TryParse(daoTask[Finish], out var fb2))
|
||||
{
|
||||
finished2 = fb2;
|
||||
}
|
||||
|
||||
|
||||
if (finished1 != null && finished2 != null)
|
||||
{
|
||||
TaskInfo[Finish] = finished1.ToString();
|
||||
}
|
||||
|
||||
SuccessProcessed = Convert.ToInt32(thirdpartyTask[Process]) + Convert.ToInt32(daoTask[Process]);
|
||||
SuccessProcessed = thirdpartyTask[Process] + daoTask[Process];
|
||||
|
||||
|
||||
base.FillDistributedTask();
|
||||
@ -182,12 +181,12 @@ internal class ComposeFileOperation<T1, T2> : FileOperation
|
||||
|
||||
if (ThirdPartyOperation.Total != 0)
|
||||
{
|
||||
progress += Convert.ToInt32(thirdpartyTask[Progress]);
|
||||
progress += thirdpartyTask[Progress];
|
||||
}
|
||||
|
||||
if (DaoOperation.Total != 0)
|
||||
{
|
||||
progress += Convert.ToInt32(daoTask[Progress]);
|
||||
progress += daoTask[Progress];
|
||||
}
|
||||
|
||||
if (ThirdPartyOperation.Total != 0 && DaoOperation.Total != 0)
|
||||
@ -195,7 +194,7 @@ internal class ComposeFileOperation<T1, T2> : FileOperation
|
||||
progress /= 2;
|
||||
}
|
||||
|
||||
TaskInfo[Progress] = (progress < 100 ? progress : 100).ToString();
|
||||
TaskInfo[Progress] = progress < 100 ? progress : 100;
|
||||
TaskInfo.PublishChanges();
|
||||
}
|
||||
|
||||
@ -304,7 +303,7 @@ abstract class FileOperation<T, TId> : FileOperation where T : FileOperationData
|
||||
{
|
||||
try
|
||||
{
|
||||
TaskInfo[Finish] = "true";
|
||||
TaskInfo[Finish] = true;
|
||||
PublishTaskInfo();
|
||||
}
|
||||
catch { /* ignore */ }
|
||||
|
@ -52,7 +52,7 @@ public class FileOperationsManager
|
||||
{
|
||||
foreach (var o in operations.Where(o => processlist.All(p => p.Id != o.InstanceId)))
|
||||
{
|
||||
o[FileOperation.Progress] = "100";
|
||||
o[FileOperation.Progress] = 100;
|
||||
_tasks.DequeueTask(o.Id);
|
||||
}
|
||||
}
|
||||
@ -60,23 +60,23 @@ public class FileOperationsManager
|
||||
operations = operations.Where(t => new Guid(t[FileOperation.Owner]) == userId).ToList();
|
||||
foreach (var o in operations.Where(o => o.Status > DistributedTaskStatus.Running))
|
||||
{
|
||||
o[FileOperation.Progress] = "100";
|
||||
o[FileOperation.Progress] = 100;
|
||||
|
||||
_tasks.DequeueTask(o.Id);
|
||||
}
|
||||
|
||||
var results = operations
|
||||
.Where(o => bool.Parse(o[FileOperation.Hold]) || Convert.ToInt32(o[FileOperation.Progress]) != 100)
|
||||
.Where(o => o[FileOperation.Hold] || o[FileOperation.Progress] != 100)
|
||||
.Select(o => new FileOperationResult
|
||||
{
|
||||
Id = o.Id,
|
||||
OperationType = (FileOperationType)Convert.ToInt32(o[FileOperation.OpType]),
|
||||
OperationType = (FileOperationType)o[FileOperation.OpType],
|
||||
Source = o[FileOperation.Src],
|
||||
Progress = Convert.ToInt32(o[FileOperation.Progress]),
|
||||
Processed = o[FileOperation.Process].ToString(),
|
||||
Progress = o[FileOperation.Progress],
|
||||
Processed = Convert.ToString(o[FileOperation.Process]),
|
||||
Result = o[FileOperation.Res],
|
||||
Error = o[FileOperation.Err],
|
||||
Finished = bool.Parse(o[FileOperation.Finish])
|
||||
Finished = o[FileOperation.Finish]
|
||||
})
|
||||
.ToList();
|
||||
|
||||
@ -113,7 +113,7 @@ public class FileOperationsManager
|
||||
{
|
||||
var operations = _tasks.GetAllTasks()
|
||||
.Where(t => new Guid(t[FileOperation.Owner]) == userId)
|
||||
.Where(t => (FileOperationType)Convert.ToInt32(t[FileOperation.OpType]) == FileOperationType.Download);
|
||||
.Where(t => (FileOperationType)t[FileOperation.OpType] == FileOperationType.Download);
|
||||
|
||||
if (operations.Any(o => o.Status <= DistributedTaskStatus.Running))
|
||||
{
|
||||
|
@ -177,7 +177,7 @@ public class SmtpOperation
|
||||
{
|
||||
try
|
||||
{
|
||||
TaskInfo[FINISHED] = true.ToString();
|
||||
TaskInfo[FINISHED] = true;
|
||||
PublishTaskInfo();
|
||||
|
||||
_securityContext.Logout();
|
||||
@ -208,8 +208,8 @@ public class SmtpOperation
|
||||
protected virtual void FillDistributedTask()
|
||||
{
|
||||
TaskInfo[SOURCE] = Source;
|
||||
TaskInfo[OWNER] = Convert.ToString(CurrentTenant);
|
||||
TaskInfo[PROGRESS] = Convert.ToString(Progress < 100 ? Progress : 100);
|
||||
TaskInfo[OWNER] = CurrentTenant;
|
||||
TaskInfo[PROGRESS] = Progress < 100 ? Progress : 100;
|
||||
TaskInfo[RESULT] = Status;
|
||||
TaskInfo[ERROR] = Error;
|
||||
//TaskInfo.SetProperty(PROCESSED, successProcessed);
|
||||
|
@ -65,7 +65,7 @@ namespace ASC.Web.Studio.Core.Quota
|
||||
|
||||
public virtual DistributedTask GetDistributedTask()
|
||||
{
|
||||
TaskInfo[TenantIdKey] = TenantId.ToString();
|
||||
TaskInfo[TenantIdKey] = TenantId;
|
||||
return TaskInfo;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user