public static void DisposeDataExtensionObject <T>(ref T obj, string objectType, string dataSetName, DataProcessingMetrics executionMetrics, DataProcessingMetrics.MetricType?metricType) where T : class, IDisposable { if (obj != null) { 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); } } } }
public static IDbConnection OpenConnection(AspNetCore.ReportingServices.ReportIntermediateFormat.DataSource dataSourceObj, AspNetCore.ReportingServices.ReportIntermediateFormat.DataSet dataSetObj, OnDemandProcessingContext pc, DataProcessingMetrics metrics) { IDbConnection dbConnection = null; try { metrics.StartTimer(DataProcessingMetrics.MetricType.OpenConnection); DataSourceInfo dataSourceInfo = null; string text = dataSourceObj.ResolveConnectionString(pc, out dataSourceInfo); if (pc.UseVerboseExecutionLogging) { metrics.ResolvedConnectionString = text; } //if (pc.CreateAndSetupDataExtensionFunction.MustResolveSharedDataSources) //{ //} 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); } }