ssteenkiste / nettiers

Automatically exported from code.google.com/p/nettiers
1 stars 0 forks source link

IndexOutOfRangeException occurs on GetPage when number of users accessing same entity reaches some threshold #365

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Running nettiers 2.3 r775 and CodeSmith 4.1.  

When load on web server is around 100 users using the ecn_Positions table an 
IndexOutOfRangeException occurs.  Error seems to be related to an error fixed 
in an earlier version.  Once the application pool is recycled the error goes 
away.

So far turning off EntityTracking (EntityTracking=False) seems to eliminate the 
errors but this has not been verified - i.e. we have not seen the issue since 
EntityTracking was turned off.

The error occurs at:

Positions = ecn.DAL.DataRepository.Ecn_PositionsProvider.GetPaged( _
                    SQLString, "RowVersion DESC", 0, 0, RecCount)

The error seems to occur when some threshold number of users accessing this 
code is reached.  Once it happens everyone accessing this entity/table 
ecn_Positions gets the IndexOutOfRangeException.

Here's an example stack trace:

Exception information: 
    Exception type: IndexOutOfRangeException 
    Exception message: Index was outside the bounds of the array. 

Request information: 
    Request URL: https://www.econsultingnetwork.com:443/ecn/clients/coa/survey.aspx 
    Request path: /ecn/clients/coa/survey.aspx 
    User host address: 65.82.136.2 
    User: 1666 
    Is authenticated: True 
    Authentication Type: Forms 
    Thread account name: NT AUTHORITY\NETWORK SERVICE 

Thread information: 
    Thread ID: 9 
    Thread account name: NT AUTHORITY\NETWORK SERVICE 
    Is impersonating: False 
    Stack trace:    at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
   at Microsoft.Practices.ObjectBuilder.WeakRefDictionary`2.Add(TKey key, TValue value)
   at Microsoft.Practices.ObjectBuilder.Locator.Add(Object key, Object value)
   at ecn.BLL.EntityLocator.Add(String key, Object value)
   at ecn.BLL.EntityManager.StartTracking(String key, IEntity entity, Boolean isTrackingEnabled)
   at ecn.BLL.EntityManager.LocateOrCreate[Entity](String key, String typeString, Type entityFactoryType, Boolean isLocatorEnabled)
   at ecn.DAL.Bases.Ecn_PositionsProviderBaseCore.Fill(IDataReader reader, TList`1 rows, Int32 start, Int32 pageLength)
   at ecn.DAL.SqlClient.SqlEcn_PositionsProviderBase.GetPaged(TransactionManager transactionManager, String whereClause, String orderBy, Int32 start, Int32 pageLength, Int32& count)
   at ecn.DAL.Bases.EntityProviderBaseCore`2.GetPaged(String whereClause, String orderBy, Int32 start, Int32 pageLength, Int32& count)
   at Secure_AtlantaGASurvey2.Page_Load(Object sender, EventArgs e)
   at System.Web.UI.Control.OnLoad(EventArgs e)
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Original issue reported on code.google.com by ramayana...@gmail.com on 2 Feb 2011 at 7:39

GoogleCodeExporter commented 9 years ago

Original comment by bniemyjski on 2 Feb 2011 at 10:38