private void RunSubPipelines(PipelineContext pipelineContext, Pipeline subPipeline) { ILogger logger = pipelineContext.PipelineBatchContext.Logger; pipelineContext.CurrentPipeline = subPipeline; IPipelineProcessor pipelineProcessor = subPipeline.PipelineProcessor; if (pipelineProcessor == null) { logger.Error("Pipeline will be skipped because it does not have a processor assigned. (pipeline step: {0}, sub-pipeline: {1})", "Iterate and Run Async", (object)subPipeline.Name); } else if (!pipelineProcessor.CanProcess(subPipeline, pipelineContext)) { logger.Error("Pipeline will be skipped because the processor cannot processes the sub-pipeline. (pipeline step: {0}, sub-pipeline: {1}, sub-pipeline processor: {2})", "Iterate and Run Async", (object)subPipeline.Name, (object)pipelineProcessor.GetType().FullName); } else { pipelineProcessor.Process(subPipeline, pipelineContext); if (pipelineContext.CriticalError) { logger.Error("Sub pipeline processing will not abort since it's done async"); } } }