Пример #1
0
        /// <summary>
        /// Updates repair task based on its current state.
        /// </summary>
        /// <param name="task"><see cref="RepairTask"/> to be updated</param>
        /// <param name="nodeName">Node name of the repair task.</param>
        /// <param name="finalState">Required Final state of the repair task.</param>
        /// <param name="executorTimeoutInMinutes">executorTimeoutInMinutes</param>
        /// <param name="cancellationToken">CancellationToken</param>
        /// <returns></returns>
        private async Task UpdateRepairTaskState(RepairTask task, string nodeName, RepairTaskState finalState, int executorTimeoutInMinutes, CancellationToken cancellationToken, bool nodeExists = true)
        {
            task.State        = finalState;
            task.ResultStatus = RepairTaskResult.Cancelled;
            if (nodeExists)
            {
                ServiceEventSource.Current.ErrorMessage(
                    "Installation timeout {0} minutes alloted to task {1}, node {2} is over. Moving the repair task to {3} state to unblock installation on other nodes",
                    executorTimeoutInMinutes,
                    task.TaskId,
                    nodeName,
                    finalState.ToString());
            }
            else
            {
                ServiceEventSource.Current.ErrorMessage(
                    "Installation timeout {0} minutes alloted to task {1} and node {2} does not exist in the cluster. So, Moving the repair task to {3} state ",
                    executorTimeoutInMinutes,
                    task.TaskId,
                    nodeName,
                    finalState.ToString());
            }

            await this.fabricClient.RepairManager.UpdateRepairExecutionStateAsync(task, this.DefaultTimeoutForOperation, cancellationToken);
        }
Пример #2
0
        private void Update(RepairTask task, RepairTaskState state, RepairTaskResult result)
        {
            LogHelper.Log("[{0}]Repair task from state {1} to state {2} with result {3}.", Name, task.State.ToString(), state.ToString(), result.ToString());
            task.State    = state;
            task.Executor = Name;
            if (state == RepairTaskState.Preparing)
            {
                task.Impact = new NodeRepairImpactDescription(); //zero impact
            }
            if (state == RepairTaskState.Restoring || state == RepairTaskState.Completed)
            {
                task.ResultStatus = result;
            }
            task.ResultDetails = "Hooray!";
            long committedVersion = _repairManager.UpdateRepairExecutionStateAsync(task).Result;

            LogHelper.Log("...Done. Commit version: {0}.", committedVersion);
        }