private void ExecuteSequentialDataSets() { for (int i = 0; i < m_runtimeDataSets.Count; i++) { m_odpContext.CheckAndThrowIfAborted(); RuntimeAtomicDataSet runtimeAtomicDataSet = (RuntimeAtomicDataSet)m_runtimeDataSets[i]; runtimeAtomicDataSet.InitProcessingParams(m_connection, m_transaction); runtimeAtomicDataSet.ProcessConcurrent(null); m_executionMetrics.Add(runtimeAtomicDataSet.DataSetExecutionMetrics); } }
private void ExecuteParallelDataSets() { ThreadSet threadSet = new ThreadSet(m_runtimeDataSets.Count - 1); try { for (int i = 1; i < m_runtimeDataSets.Count; i++) { RuntimeAtomicDataSet runtimeAtomicDataSet = (RuntimeAtomicDataSet)m_runtimeDataSets[i]; runtimeAtomicDataSet.InitProcessingParams(null, m_transaction); threadSet.TryQueueWorkItem(m_odpContext, runtimeAtomicDataSet.ProcessConcurrent); } RuntimeAtomicDataSet obj = (RuntimeAtomicDataSet)m_runtimeDataSets[0]; obj.InitProcessingParams(m_connection, m_transaction); obj.ProcessConcurrent(null); } catch (Exception e) { if (m_odpContext.AbortInfo != null) { m_odpContext.AbortInfo.SetError(e, m_odpContext.ProcessingAbortItemUniqueIdentifier); } throw; } finally { threadSet.WaitForCompletion(); threadSet.Dispose(); } if (!NeedsExecutionLogging || m_odpContext.JobContext == null) { return; } DataProcessingMetrics dataProcessingMetrics = null; for (int j = 0; j < m_runtimeDataSets.Count; j++) { RuntimeDataSet runtimeDataSet = m_runtimeDataSets[j]; if (dataProcessingMetrics == null || runtimeDataSet.DataSetExecutionMetrics.TotalDurationMs > dataProcessingMetrics.TotalDurationMs) { dataProcessingMetrics = runtimeDataSet.DataSetExecutionMetrics; } } m_executionMetrics.Add(dataProcessingMetrics); }