There was a problem converting an IDataReader to NDataReader... OutOfMemoryException

2,066 views
Skip to first unread message

Trinition

unread,
Jun 15, 2011, 11:25:17 AM6/15/11
to nhusers
Using NHibernate 3.1.0.4000 (recently upgraded from 3.0.x), I'm
getting an error I've never seen before and didn't find any hits on
the web. Is this new?

ADOException detected and will be re-thrown - NHibernate.ADOException:
There was a problem converting an IDataReader to NDataReader --->
System.OutOfMemoryException: Exception of type
'System.OutOfMemoryException' was thrown.
at System.Data.SqlClient.SqlBuffer.get_Value()
at System.Data.SqlClient.SqlDataReader.GetValueInternal(Int32 i)
at System.Data.SqlClient.SqlDataReader.GetValues(Object[] values)
at NHibernate.Driver.NDataReader.NResult..ctor(IDataReader reader,
Boolean isMidstream) in d:\CSharp\NH\NH\nhibernate\src\NHibernate
\Driver\NDataReader.cs:line 529
at NHibernate.Driver.NDataReader..ctor(IDataReader reader, Boolean
isMidstream) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Driver
\NDataReader.cs:line 59
--- End of inner exception stack trace ---
at NHibernate.Driver.NDataReader..ctor(IDataReader reader, Boolean
isMidstream) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Driver
\NDataReader.cs:line 71
at NHibernate.Driver.NHybridDataReader.ReadIntoMemory() in d:\CSharp
\NH\NH\nhibernate\src\NHibernate\Driver\NHybridDataReader.cs:line 72
at NHibernate.AdoNet.AbstractBatcher.CheckReaders() in d:\CSharp\NH
\NH\nhibernate\src\NHibernate\AdoNet\AbstractBatcher.cs:line 282
at NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd)
in d:\CSharp\NH\NH\nhibernate\src\NHibernate\AdoNet
\AbstractBatcher.cs:line 232
at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, Boolean
autoDiscoverTypes, Boolean callable, RowSelection selection,
ISessionImplementor session) in d:\CSharp\NH\NH\nhibernate\src
\NHibernate\Loader\Loader.cs:line 1349
at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session,
QueryParameters queryParameters, Boolean returnProxies) in d:\CSharp\NH
\NH\nhibernate\src\NHibernate\Loader\Loader.cs:line 413
at
NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor
session, QueryParameters queryParameters, Boolean returnProxies) in d:
\CSharp\NH\NH\nhibernate\src\NHibernate\Loader\Loader.cs:line 243
at NHibernate.Loader.Loader.LoadEntity(ISessionImplementor session,
Object id, IType identifierType, Object optionalObject, String
optionalEntityName, Object optionalIdentifier, IEntityPersister
persister) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Loader
\Loader.cs:line 1408
at
NHibernate.Loader.Entity.AbstractEntityLoader.Load(ISessionImplementor
session, Object id, Object optionalObject, Object optionalId) in d:
\CSharp\NH\NH\nhibernate\src\NHibernate\Loader\Entity
\AbstractEntityLoader.cs:line 42
at NHibernate.Loader.Entity.AbstractEntityLoader.Load(Object id,
Object optionalObject, ISessionImplementor session) in d:\CSharp\NH\NH
\nhibernate\src\NHibernate\Loader\Entity\AbstractEntityLoader.cs:line
37
at NHibernate.Persister.Entity.AbstractEntityPersister.Load(Object
id, Object optionalObject, LockMode lockMode, ISessionImplementor
session) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Persister\Entity
\AbstractEntityPersister.cs:line 3473
at
NHibernate.Event.Default.DefaultLoadEventListener.LoadFromDatasource(LoadEvent
event, IEntityPersister persister, EntityKey keyToLoad, LoadType
options) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Event\Default
\DefaultLoadEventListener.cs:line 345
at
NHibernate.Event.Default.DefaultLoadEventListener.DoLoad(LoadEvent
event, IEntityPersister persister, EntityKey keyToLoad, LoadType
options) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Event\Default
\DefaultLoadEventListener.cs:line 323
at NHibernate.Event.Default.DefaultLoadEventListener.Load(LoadEvent
event, IEntityPersister persister, EntityKey keyToLoad, LoadType
options) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Event\Default
\DefaultLoadEventListener.cs:line 104
at
NHibernate.Event.Default.DefaultLoadEventListener.OnLoad(LoadEvent
event, LoadType loadType) in d:\CSharp\NH\NH\nhibernate\src\NHibernate
\Event\Default\DefaultLoadEventListener.cs:line 87
at NHibernate.Impl.SessionImpl.FireLoad(LoadEvent event, LoadType
loadType) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl
\SessionImpl.cs:line 2468
at NHibernate.Impl.SessionImpl.ImmediateLoad(String entityName,
Object id) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl
\SessionImpl.cs:line 1356
at NHibernate.Proxy.AbstractLazyInitializer.Initialize() in d:
\CSharp\NH\NH\nhibernate\src\NHibernate\Proxy
\AbstractLazyInitializer.cs:line 125
at NHibernate.Proxy.AbstractLazyInitializer.GetImplementation() in
d:\CSharp\NH\NH\nhibernate\src\NHibernate\Proxy
\AbstractLazyInitializer.cs:line 191
at NHibernate.ByteCode.Castle.LazyInitializer.Intercept(IInvocation
invocation) in d:\CSharp\NH\NH\nhibernate\src
\NHibernate.ByteCode.Castle\LazyInitializer.cs:line 61
at Castle.DynamicProxy.AbstractInvocation.Proceed()
at Castle.Proxies.BankruptcyStateProxy.GetHashCode()
at
System.Collections.Generic.ObjectEqualityComparer`1.GetHashCode(T obj)
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue
value, Boolean add)
at System.Collections.Generic.Dictionary`2.set_Item(TKey key,
TValue value)
at
NHibernate.Collection.Generic.PersistentGenericMap`2.AddDuringInitialize(Object
index, Object element) in d:\CSharp\NH\NH\nhibernate\src\NHibernate
\Collection\Generic\PersistentGenericMap.cs:line 106
at NHibernate.Collection.PersistentMap.ReadFrom(IDataReader rs,
ICollectionPersister role, ICollectionAliases descriptor, Object
owner) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Collection
\PersistentMap.cs:line 112
at NHibernate.Loader.Loader.ReadCollectionElement(Object
optionalOwner, Object optionalKey, ICollectionPersister persister,
ICollectionAliases descriptor, IDataReader rs, ISessionImplementor
session) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Loader
\Loader.cs:line 717
at NHibernate.Loader.Loader.ReadCollectionElements(Object[] row,
IDataReader resultSet, ISessionImplementor session) in d:\CSharp\NH\NH
\nhibernate\src\NHibernate\Loader\Loader.cs:line 397
at NHibernate.Loader.Loader.GetRowFromResultSet(IDataReader
resultSet, ISessionImplementor session, QueryParameters
queryParameters, LockMode[] lockModeArray, EntityKey
optionalObjectKey, IList hydratedObjects, EntityKey[] keys, Boolean
returnProxies) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Loader
\Loader.cs:line 338
at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session,
QueryParameters queryParameters, Boolean returnProxies) in d:\CSharp\NH
\NH\nhibernate\src\NHibernate\Loader\Loader.cs:line 465
at
NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor
session, QueryParameters queryParameters, Boolean returnProxies) in d:
\CSharp\NH\NH\nhibernate\src\NHibernate\Loader\Loader.cs:line 243
at NHibernate.Loader.Loader.LoadEntity(ISessionImplementor session,
Object id, IType identifierType, Object optionalObject, String
optionalEntityName, Object optionalIdentifier, IEntityPersister
persister) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Loader
\Loader.cs:line 1408
at
NHibernate.Loader.Entity.AbstractEntityLoader.Load(ISessionImplementor
session, Object id, Object optionalObject, Object optionalId) in d:
\CSharp\NH\NH\nhibernate\src\NHibernate\Loader\Entity
\AbstractEntityLoader.cs:line 42
at NHibernate.Loader.Entity.AbstractEntityLoader.Load(Object id,
Object optionalObject, ISessionImplementor session) in d:\CSharp\NH\NH
\nhibernate\src\NHibernate\Loader\Entity\AbstractEntityLoader.cs:line
37
at NHibernate.Persister.Entity.AbstractEntityPersister.Load(Object
id, Object optionalObject, LockMode lockMode, ISessionImplementor
session) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Persister\Entity
\AbstractEntityPersister.cs:line 3473
at
NHibernate.Event.Default.DefaultLoadEventListener.LoadFromDatasource(LoadEvent
event, IEntityPersister persister, EntityKey keyToLoad, LoadType
options) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Event\Default
\DefaultLoadEventListener.cs:line 345
at
NHibernate.Event.Default.DefaultLoadEventListener.DoLoad(LoadEvent
event, IEntityPersister persister, EntityKey keyToLoad, LoadType
options) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Event\Default
\DefaultLoadEventListener.cs:line 323
at NHibernate.Event.Default.DefaultLoadEventListener.Load(LoadEvent
event, IEntityPersister persister, EntityKey keyToLoad, LoadType
options) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Event\Default
\DefaultLoadEventListener.cs:line 104
at
NHibernate.Event.Default.DefaultLoadEventListener.OnLoad(LoadEvent
event, LoadType loadType) in d:\CSharp\NH\NH\nhibernate\src\NHibernate
\Event\Default\DefaultLoadEventListener.cs:line 87
at NHibernate.Impl.SessionImpl.FireLoad(LoadEvent event, LoadType
loadType) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl
\SessionImpl.cs:line 2468
at NHibernate.Impl.SessionImpl.ImmediateLoad(String entityName,
Object id) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl
\SessionImpl.cs:line 1356
at NHibernate.Proxy.AbstractLazyInitializer.Initialize() in d:
\CSharp\NH\NH\nhibernate\src\NHibernate\Proxy
\AbstractLazyInitializer.cs:line 125
at NHibernate.Proxy.AbstractLazyInitializer.GetImplementation() in
d:\CSharp\NH\NH\nhibernate\src\NHibernate\Proxy
\AbstractLazyInitializer.cs:line 191
at NHibernate.ByteCode.Castle.LazyInitializer.Intercept(IInvocation
invocation) in d:\CSharp\NH\NH\nhibernate\src
\NHibernate.ByteCode.Castle\LazyInitializer.cs:line 61
at Castle.DynamicProxy.AbstractInvocation.Proceed()
... my code...

Trinition

unread,
Jun 15, 2011, 11:51:12 AM6/15/11
to nhusers
I believe I found the problem. As a handful of developers have each
been adding to one class/mappings, they've each been adding some
"lazy=false" / "fetch=join" children to the class, so I ended up with
7 left-outer-joins yielding over 800,000 rows. Knowing is half the
battle. Now I must finish the battle.
Reply all
Reply to author
Forward
0 new messages