/// <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); }
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); }