Пример #1
0
        public async Task <long> CancelRepairTaskAsync(Guid activityId, IRepairTask repairTask)
        {
            repairTask.Validate("repairTask");

            var startTime = DateTimeOffset.UtcNow;
            var oldState  = repairTask.State;
            var duration  = repairTask.GetTimeInCurrentState(startTime);

            try
            {
                var commitVersion = await repairManager.CancelRepairTaskAsync(repairTask.TaskId, repairTask.Version, false).ConfigureAwait(false);

                traceType.WriteInfo(
                    "Canceled repair task: {0}",
                    repairTask.ToJson());

                activityLogger.LogChangeState(activityId, repairTask, oldState, RepairTaskState.Invalid, duration, repairTask.ToString(), repairTask.TaskId);
                activityLogger.LogOperation(activityId, startTime, OperationResult.Success, null, repairTask.ToJson());

                return(commitVersion);
            }
            catch (Exception ex)
            {
                traceType.WriteWarning(
                    "Unable to cancel repair task. Continuing. Repair task: {0}{1}Errors: {2}",
                    repairTask.ToJson(), Environment.NewLine, ex);
                activityLogger.LogOperation(activityId, startTime, OperationResult.Failure, ex, repairTask.ToJson());
                throw;
            }
        }
Пример #2
0
        public async Task <long> UpdateRepairTaskHealthPolicyAsync(
            Guid activityId,
            IRepairTask repairTask,
            bool?performPreparingHealthCheck,
            bool?performRestoringHealthCheck)
        {
            repairTask.Validate("repairTask");

            var startTime         = DateTimeOffset.UtcNow;
            var preparingOldState = repairTask.PerformPreparingHealthCheck;
            var restoringOldState = repairTask.PerformRestoringHealthCheck;

            var duration = repairTask.GetTimeInCurrentState(startTime);

            try
            {
                var commitVersion = await repairManager.UpdateRepairTaskHealthPolicyAsync(
                    repairTask.TaskId,
                    repairTask.Version,
                    performPreparingHealthCheck,
                    performRestoringHealthCheck).ConfigureAwait(false);

                traceType.WriteInfo(
                    "Updated repair task health policy: {0}",
                    repairTask.ToJson());

                if (performPreparingHealthCheck.HasValue && preparingOldState != performPreparingHealthCheck.Value)
                {
                    activityLogger.LogChangeState(activityId, repairTask, preparingOldState, performPreparingHealthCheck.Value, duration, repairTask.ToString(), repairTask.TaskId);
                }
                if (performRestoringHealthCheck.HasValue && restoringOldState != performRestoringHealthCheck.Value)
                {
                    activityLogger.LogChangeState(activityId, repairTask, restoringOldState, performRestoringHealthCheck.Value, duration, repairTask.ToString(), repairTask.TaskId);
                }

                activityLogger.LogOperation(activityId, startTime, OperationResult.Success, null, repairTask.ToJson());

                return(commitVersion);
            }
            catch (Exception ex)
            {
                traceType.WriteWarning(
                    "Unable to update repair task health policy. Continuing. Repair task: {0}{1}Errors: {2}",
                    repairTask.ToJson(), Environment.NewLine, ex);
                activityLogger.LogOperation(activityId, startTime, OperationResult.Failure, ex, repairTask.ToJson());
                throw;
            }
        }