internal void AddDataSetMetrics(string dataSetName, DataProcessingMetrics metrics) { lock (m_dataSetMetrics) { m_dataSetMetrics.Add(new Pair <string, DataProcessingMetrics>(dataSetName, metrics)); } }
internal RuntimeLiveQueryExecutor(Microsoft.ReportingServices.ReportIntermediateFormat.DataSource dataSource, Microsoft.ReportingServices.ReportIntermediateFormat.DataSet dataSet, OnDemandProcessingContext odpContext) { m_dataSource = dataSource; m_dataSet = dataSet; m_odpContext = odpContext; m_executionMetrics = new DataProcessingMetrics(dataSet, m_odpContext.JobContext, m_odpContext.ExecutionLogContext); }
internal ExecutedQuery(DataSource dataSource, DataSet dataSet, OnDemandProcessingContext odpContext, DataProcessingMetrics executionMetrics, string commandText, DateTime queryExecutionTimestamp, DataSourceErrorInspector errorInspector) { m_dataSource = dataSource; m_dataSet = dataSet; m_odpContext = odpContext; m_executionMetrics = executionMetrics; m_commandText = commandText; m_queryExecutionTimestamp = queryExecutionTimestamp; m_errorInspector = errorInspector; }
protected RuntimeDataSource(Microsoft.ReportingServices.ReportIntermediateFormat.Report report, Microsoft.ReportingServices.ReportIntermediateFormat.DataSource dataSource, OnDemandProcessingContext processingContext, bool mergeTransactions) { m_report = report; m_dataSource = dataSource; m_odpContext = processingContext; m_runtimeDataSets = null; m_mergeTran = mergeTransactions; m_executionMetrics = new DataProcessingMetrics(m_odpContext.JobContext, m_odpContext.ExecutionLogContext); Global.Tracer.Assert(m_dataSource.Name != null, "The name of a data source cannot be null."); }
internal void Add(DataProcessingMetrics metrics) { if (metrics != null) { if (m_totalTimeMetric != null) { m_totalTimeMetric.Add(metrics.m_totalTimeMetric); } Add(MetricType.ExecuteReader, metrics.m_executeReaderDurationMs); Add(MetricType.DataReaderMapping, metrics.m_dataReaderMappingDurationMs); Add(MetricType.Query, metrics.m_queryDurationMs); Add(MetricType.OpenConnection, metrics.m_openConnectionDurationMs); Add(MetricType.DisposeDataReader, metrics.m_disposeDataReaderDurationMs); Add(MetricType.CancelCommand, metrics.m_cancelCommandDurationMs); } }
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); }
private void FinallyBlockForDataSetExecution() { m_noRows = true; DataProcessingMetrics dataProcessingMetrics = null; foreach (RuntimeAtomicDataSource runtimeDataSource in m_runtimeDataSources) { if (dataProcessingMetrics == null || runtimeDataSource.ExecutionMetrics.TotalDurationMs > dataProcessingMetrics.TotalDurationMs) { dataProcessingMetrics = runtimeDataSource.ExecutionMetrics; } if (!runtimeDataSource.NoRows) { m_noRows = false; } } if (dataProcessingMetrics != null) { m_odpContext.ExecutionLogContext.AddDataProcessingTime(dataProcessingMetrics.TotalDuration); } m_runtimeDataSources.Clear(); }
internal static void DisposeDataExtensionObject <T>(ref T obj, string objectType, string dataSetName, DataProcessingMetrics executionMetrics, DataProcessingMetrics.MetricType?metricType) where T : class, IDisposable { if (obj == null) { return; } if (metricType.HasValue) { executionMetrics.StartTimer(metricType.Value); } try { obj.Dispose(); } catch (RSException) { throw; } catch (Exception ex2) { if (AsynchronousExceptionDetection.IsStoppingException(ex2)) { throw; } Global.Tracer.Trace(TraceLevel.Warning, "Error occurred while disposing the " + objectType + " for DataSet '" + dataSetName.MarkAsPrivate() + "'. Details: " + ex2.ToString()); } finally { obj = null; if (metricType.HasValue) { executionMetrics.RecordTimerMeasurementWithUpdatedTotal(metricType.Value); } } }
internal void AddDataSourceMetrics(string dataSourceName, string dataSourceReference, string dataSourceType, DataProcessingMetrics aggregatedMetrics, DataProcessingMetrics[] dataSetsMetrics) { lock (m_dataSourceConnectionMetrics) { m_dataSourceConnectionMetrics.Add(new DataSourceMetrics(dataSourceName, dataSourceReference, dataSourceType, aggregatedMetrics, dataSetsMetrics)); } }
internal void AddDataSourceParallelExecutionMetrics(string dataSourceName, string dataSourceReference, string dataSourceType, DataProcessingMetrics parallelDataSetMetrics) { lock (m_dataSourceConnectionMetrics) { m_dataSourceConnectionMetrics.Add(new DataSourceMetrics(dataSourceName, dataSourceReference, dataSourceType, parallelDataSetMetrics)); } }
public DataSourceMetrics(string dataSourceName, string dataSourceReference, string dataSourceType, DataProcessingMetrics parallelDataSetMetrics) : this(dataSourceName, dataSourceReference, dataSourceType, parallelDataSetMetrics.ResolvedConnectionString, parallelDataSetMetrics.OpenConnectionDurationMs, parallelDataSetMetrics.ConnectionFromPool) { m_dataSetsMetrics = new DataProcessingMetrics[1]; m_dataSetsMetrics[0] = parallelDataSetMetrics; }
public DataSourceMetrics(string dataSourceName, string dataSourceReference, string dataSourceType, DataProcessingMetrics aggregatedMetrics, DataProcessingMetrics[] dataSetsMetrics) : this(dataSourceName, dataSourceReference, dataSourceType, aggregatedMetrics.ResolvedConnectionString, aggregatedMetrics.OpenConnectionDurationMs, aggregatedMetrics.ConnectionFromPool) { m_dataSetsMetrics = dataSetsMetrics; }
internal static void CloseConnection(IDbConnection connection, Microsoft.ReportingServices.ReportIntermediateFormat.DataSource dataSource, OnDemandProcessingContext odpContext, DataProcessingMetrics executionMetrics) { try { DataSourceInfo dataSourceInfo = GetDataSourceInfo(dataSource, odpContext); odpContext.CreateAndSetupDataExtensionFunction.CloseConnection(connection, dataSource, dataSourceInfo); } catch (Exception innerException) { throw new ReportProcessingException(ErrorCode.rsErrorClosingConnection, innerException, dataSource.Name); } }
internal static IDbConnection OpenConnection(Microsoft.ReportingServices.ReportIntermediateFormat.DataSource dataSourceObj, Microsoft.ReportingServices.ReportIntermediateFormat.DataSet dataSetObj, OnDemandProcessingContext pc, DataProcessingMetrics metrics) { IDbConnection dbConnection = null; try { metrics.StartTimer(DataProcessingMetrics.MetricType.OpenConnection); DataSourceInfo dataSourceInfo = null; string text = null; if (pc.CreateAndSetupDataExtensionFunction.MustResolveSharedDataSources) { text = dataSourceObj.ResolveConnectionString(pc, out dataSourceInfo); if (pc.UseVerboseExecutionLogging) { metrics.ResolvedConnectionString = text; } } return(pc.CreateAndSetupDataExtensionFunction.OpenDataSourceExtensionConnection(dataSourceObj, text, dataSourceInfo, dataSetObj.Name)); } catch (RSException) { throw; } catch (Exception ex2) { if (AsynchronousExceptionDetection.IsStoppingException(ex2)) { throw; } throw new ReportProcessingException(ErrorCode.rsErrorOpeningConnection, ex2, dataSourceObj.Name); } finally { long num = metrics.RecordTimerMeasurementWithUpdatedTotal(DataProcessingMetrics.MetricType.OpenConnection); Global.Tracer.Trace(TraceLevel.Verbose, "Opening a connection for DataSource: {0} took {1} ms.", dataSourceObj.Name.MarkAsModelInfo(), num); } }