I have a web application use Microsoft ReportViewer(2012) to show report. I use LocalReport and normal DataTable to provide datasource. And the DataTable fill by ODP.NET. When i run one report everything is ok, but when i run two report at same time, one of report just wait until the another finish ODP.NET query, and then two report render. I do some debugging on it, but i can't find the solution. below are debug info, can anyone help me anlyze the problem. thanks. Sorry for my poor english.
!eestack -ee output
Thread 12
Current frame:
ChildEBP RetAddr Caller, Callee
04ddc8d8 0f3b0879 (MethodDesc 0f058288 +0x49 Microsoft.ReportingServices.ReportIntermediateFormat.Persistence.IntermediateFormatWriter.Write(Microsoft.ReportingServices.ReportIntermediateFormat.Persistence.IPersistable, Boolean))
04ddca2c 65926597 (MethodDesc 65180214 +0x27 System.Runtime.Remoting.ObjRef.GetServerDomainId())
04ddca50 6527da33 (MethodDesc 650df0ec +0x47 System.AppDomain.Unload(System.AppDomain))
04ddca7c 0ed9fec2 (MethodDesc 006d5690 +0x132 Microsoft.Reporting.ReportCompiler.CompileReport(Microsoft.ReportingServices.Diagnostics.ICatalogItemContext, Byte[], Boolean, Microsoft.ReportingServices.Library.ControlSnapshot ByRef))
04ddcaa4 0ed9fbd0 (MethodDesc 0edafbb8 +0x20 Microsoft.Reporting.ReportRuntimeSetupHandler.GetReportRuntimeSetup())
04ddcab8 0ed9f76a (MethodDesc 0edaede8 +0xea Microsoft.Reporting.LocalService.GetCompiledReport(Microsoft.Reporting.PreviewItemContext, Boolean, Microsoft.ReportingServices.Library.ControlSnapshot ByRef))
04ddcb00 65311c03 (MethodDesc 650e1b18 +0xe3 System.Collections.Generic.Dictionary`2[[System.__Canon, mscorlib],[System.__Canon, mscorlib]].FindEntry(System.__Canon))
04ddcb14 0ed9f62e (MethodDesc 0edaee04 +0x1e Microsoft.Reporting.LocalService.CompileReport())
04ddcb30 0ed9f5f6 (MethodDesc 0edaedf4 +0x6 Microsoft.Reporting.LocalService.Microsoft.Reporting.ILocalProcessingHost.CompileReport())
04ddcb34 0ed9f535 (MethodDesc 0eda8f2c +0x45 Microsoft.Reporting.WebForms.LocalReport.EnsureExecutionSession())
04ddcb64 0ed9f487 (MethodDesc 0eda8f60 +0x37 Microsoft.Reporting.WebForms.LocalReport.GetParameters())
04ddcb94 0f39a67d (MethodDesc 006b82ac +0xad XRisk.BLL.Report.RenderReport.processParameter())
04ddcbbc 0ea05c11 (MethodDesc 03fd7c94 +0x71 XRisk.BLL.Report.ReportEntity.get_SubReportCodeList())
04ddcbd0 03ef07fb (MethodDesc 03f00a3c +0x2b XRisk.PCL.Utility.LogHelper.Info(System.Object))
04ddcbe0 0f39a3fb (MethodDesc 006b8294 +0x4db XRisk.BLL.Report.RenderReport.LoadReport())
04ddcc04 03eff56a (MethodDesc 03fdb4ac +0x6a XRisk.BLL.BusinessEntityListProvider.XRisk.BLL.IEntityListProvider.Execute[[System.__Canon, mscorlib]](XRisk.BLL.CacheMode, System.String, System.Object[]))
04ddccd4 0f399e0d (MethodDesc 006b8288 +0xcd XRisk.BLL.Report.RenderReport.Render(XRisk.BLL.Report.RenderFormat))
04ddcce0 6531091a (MethodDesc 650e1b28 +0x13a System.Collections.Generic.Dictionary`2[[System.__Canon, mscorlib],[System.__Canon, mscorlib]].Insert(System.__Canon, System.__Canon, Boolean))
04ddcce4 65310a92 (MethodDesc 650e1c50 +0x12 System.Collections.Generic.EqualityComparer`1[[System.__Canon, mscorlib]].get_Default())
04ddcce8 0f399ce2 (MethodDesc 006b8258 +0xc2 XRisk.BLL.Report.RenderReport..ctor(Microsoft.Reporting.WebForms.LocalReport, System.String, System.Collections.Generic.Dictionary`2<System.String,System.String>, System.Data.DataSet, Int32, System.Collections.Generic.IDictionary`2<System.String,System.String>))
04ddcd14 0f3996be (MethodDesc 006b7078 +0x4de XRisk.Web.Report.ReportViewRdlc.SetReport())
04ddcd48 03ef07fb (MethodDesc 03f00a3c +0x2b XRisk.PCL.Utility.LogHelper.Info(System.Object))
04ddcd58 0f39917b (MethodDesc 0eb45794 +0x3eb XRisk.Web.SessionHelper.ClearReportViewerCache(System.Web.SessionState.HttpSessionState, System.String))
04ddce24 0f398ceb (MethodDesc 006b7048 +0xab XRisk.Web.Report.ReportViewRdlc.Page_Load(System.Object, System.EventArgs))
another thread.
Thread 27
Current frame:
ChildEBP RetAddr Caller, Callee
0e9fd838 0c3b906d (MethodDesc 0c02a8f0 +0x37d Oracle.DataAccess.Client.OracleDataReader.GetString(Int32))
0e9fe168 0c0f07d1 (MethodDesc 0c02eab8 +0x181 DomainNeutralILStubClass.IL_STUB_PInvoke(IntPtr, IntPtr ByRef, IntPtr ByRef, IntPtr ByRef, IntPtr ByRef, IntPtr, Int32 ByRef, Int32, Int32, Int64 ByRef, Oracle.DataAccess.Client.OpoSqlValCtx* ByRef, System.String, Oracle.DataAccess.Client.OpoDacValCtx* ByRef, IntPtr[], System.String[], Oracle.DataAccess.Client.OpoMetValCtx* ByRef, Int32))
0e9fe1dc 0c0f07d1 (MethodDesc 0c02eab8 +0x181 DomainNeutralILStubClass.IL_STUB_PInvoke(IntPtr, IntPtr ByRef, IntPtr ByRef, IntPtr ByRef, IntPtr ByRef, IntPtr, Int32 ByRef, Int32, Int32, Int64 ByRef, Oracle.DataAccess.Client.OpoSqlValCtx* ByRef, System.String, Oracle.DataAccess.Client.OpoDacValCtx* ByRef, IntPtr[], System.String[], Oracle.DataAccess.Client.OpoMetValCtx* ByRef, Int32))
0e9fe26c 0c13cc4f (MethodDesc 0c026010 +0xdaf Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean, Boolean, System.Data.CommandBehavior))
0e9fe45c 0c13988c (MethodDesc 0c0266a4 +0xcc Oracle.DataAccess.Client.OracleDataAdapter.Fill(System.Data.DataSet, Int32, Int32, System.String, System.Data.IDbCommand, System.Data.CommandBehavior))
0e9fe4ac 5574b35f (MethodDesc 5568f994 +0x5f System.Data.Common.DbDataAdapter.Fill(System.Data.DataSet))
0e9fe4f0 04487cbe (MethodDesc 03fde7fc +0xbe XRisk.DAL.Oracle.ODPOracleHelper.ExecuteDataSet(System.String, XRisk.DAL.Oracle.ODPCommandItem, Oracle.DataAccess.Client.OracleConnection))
0e9fe548 04485f63 (MethodDesc 03fddf6c +0xe3 XRisk.DAL.Oracle.ODPProcCommand.ExecuteDataSet(XRisk.DAL.ContentTemplate, Oracle.DataAccess.Client.OracleConnection))
0e9fe5f4 0561cc2c (MethodDesc 03f1f784 +0x1c Oracle.DataAccess.Client.OracleConnection.set_TxnHndAllocated(Int32))
0e9fe694 04482d5d (MethodDesc 03fddf40 +0x24d XRisk.DAL.Oracle.ODPProcCommand.ForProcTran())
0e9fe7d0 0448b67a (MethodDesc 03fdad54 +0x7a XRisk.DAL.Oracle.OracleProcService.GetData(XRisk.DAL.ProcTemplate))
0e9fe80c 0dee0c80 (MethodDesc 03fdad28 +0x40 XRisk.DAL.Oracle.OracleProcService.GetData(System.String, XRisk.DAL.ParamPair[]))
0e9fe82c 006a931e (MethodDesc 0eb4e280 +0x55e XRisk.BLL.Task.ProcCalcTask.DoExecute())
0e9fe850 03efd524 (MethodDesc 03f07038 +0xb4 log4net.Repository.Hierarchy.Logger.CallAppenders(log4net.Core.LoggingEvent))
0e9fe88c 03efd3da (MethodDesc 03f07050 +0x4a log4net.Repository.Hierarchy.Logger.ForcedLog(System.Type, log4net.Core.Level, System.Object, System.Exception))
0e9fe8a0 03efd153 (MethodDesc 03f07018 +0x63 log4net.Repository.Hierarchy.Logger.Log(System.Type, log4net.Core.Level, System.Object, System.Exception))
0e9fe8d4 03ef0990 (MethodDesc 03f00a78 +0x170 XRisk.PCL.Utility.LogHelper.Log(System.Object, log4net.Core.Level, System.String))
0e9fea1c 0ec85896 (MethodDesc 04e04ab4 +0xa6 XRisk.BLL.Task.TaskBase.Execute())
0e9fea7c 0dee41de (MethodDesc 04e00538 +0x18e XRisk.BLL.Task.TaskService.ExecWebTask())
0e9feb60 6530b30b (MethodDesc 6514e550 +0x63 System.Threading.ThreadHelper.ThreadStart_Context(System.Object))
0e9feb70 65298004 (MethodDesc 650d75f4 +0xb0 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean))
0e9feb8c 65297f44 (MethodDesc 650d75e8 +0x2c System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object))
0e9febac 6530b298 (MethodDesc 650c86cc +0x44 System.Threading.ThreadHelper.ThreadStart())
and thread state:
0:012> !threadstate 3009220
Legal to Join
Background
CLR Owns
In Multi Threaded Apartment
Thread Pool Worker Thread
Interruptible
0:012> !threadstate b020
Legal to Join
CLR Owns
CoInitialized
In Multi Threaded Apartment
the one report not render while a background thread execute ODP.NET query, why?