private ExecutionResult LogAndGetNetworkFailureResult(PipCompletionTask pipCompletionTask, string errorMessage) { var runnablePip = pipCompletionTask.RunnablePip; var operationContext = runnablePip.OperationContext; if (m_exitFailure == null) { m_exitFailure = errorMessage; } ExecutionResult result; if (runnablePip.Step == PipExecutionStep.MaterializeOutputs) { // Output replication failures on workers due to connection issues do not fail the distributed build. // Setting the exit failure above ensures that the worker will fail its build and not proceed. Logger.Log.DistributionExecutePipFailedNetworkFailureWarning( operationContext, runnablePip.Description, Name, errorMessage: errorMessage, step: runnablePip.Step.AsString()); // Return success result result = new ExecutionResult(); result.SetResult(operationContext, PipResultStatus.NotMaterialized); result.Seal(); pipCompletionTask.Set(result); } else { Logger.Log.DistributionExecutePipFailedNetworkFailure( operationContext, runnablePip.Description, Name, errorMessage: errorMessage, step: runnablePip.Step.AsString()); result = ExecutionResult.GetFailureNotRunResult(operationContext); } return(result); }
private void FailRemotePip(PipCompletionTask pipCompletionTask, string errorMessage) { var result = LogAndGetNetworkFailureResult(pipCompletionTask, errorMessage); pipCompletionTask.Set(result); }