Today, we starting seeing IndexOutOfRangeException in
AccessOptimizer.SetPropertyValues.  Our code base in production hasn't
changed for about a week now, and all of a sudden this exception
started getting thrown.  We are unable to consistently reproduce the
bug.  But it does happen on a somewhat frequent basis.  We currently
use memcached version 1.4.1 for our nhibernate 2nd level cache.  The
exception is:

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

The call stack is:

Stack trace:
at (Object , Object[] , SetterCallback )
at NHibernate.Bytecode.Lightweight.AccessOptimizer.SetPropertyValues(Object
target, Object[] values) in
C:\SourceCode\shamu\vendor\NHibernate\2.1.0.GA\src\NHibernate\Bytecode\Lightweight\AccessOptimizer.cs:line
32
at 
NHibernate.Tuple.Entity.PocoEntityTuplizer.SetPropertyValuesWithOptimizer(Object
entity, Object[] values) in
C:\SourceCode\shamu\vendor\NHibernate\2.1.0.GA\src\NHibernate\Tuple\Entity\PocoEntityTuplizer.cs:line
292
at NHibernate.Tuple.Entity.PocoEntityTuplizer.SetPropertyValues(Object
entity, Object[] values) in
C:\SourceCode\shamu\vendor\NHibernate\2.1.0.GA\src\NHibernate\Tuple\Entity\PocoEntityTuplizer.cs:line
280
at NHibernate.Persister.Entity.AbstractEntityPersister.SetPropertyValues(Object
obj, Object[] values, EntityMode entityMode) in
C:\SourceCode\shamu\vendor\NHibernate\2.1.0.GA\src\NHibernate\Persister\Entity\AbstractEntityPersister.cs:line
3776
at NHibernate.Cache.Entry.CacheEntry.Assemble(Object[] values, Object
result, Object id, IEntityPersister persister, IInterceptor
interceptor, ISessionImplementor session) in
C:\SourceCode\shamu\vendor\NHibernate\2.1.0.GA\src\NHibernate\Cache\Entry\CacheEntry.cs:line
94
at NHibernate.Cache.Entry.CacheEntry.Assemble(Object instance, Object
id, IEntityPersister persister, IInterceptor interceptor,
ISessionImplementor session) in
C:\SourceCode\shamu\vendor\NHibernate\2.1.0.GA\src\NHibernate\Cache\Entry\CacheEntry.cs:line
72
at 
NHibernate.Event.Default.DefaultLoadEventListener.AssembleCacheEntry(CacheEntry
entry, Object id, IEntityPersister persister, LoadEvent event) in
C:\SourceCode\shamu\vendor\NHibernate\2.1.0.GA\src\NHibernate\Event\Default\DefaultLoadEventListener.cs:line
464
at 
NHibernate.Event.Default.DefaultLoadEventListener.LoadFromSecondLevelCache(LoadEvent
event, IEntityPersister persister, LoadType options) in
C:\SourceCode\shamu\vendor\NHibernate\2.1.0.GA\src\NHibernate\Event\Default\DefaultLoadEventListener.cs:line
438
at NHibernate.Event.Default.DefaultLoadEventListener.DoLoad(LoadEvent
event, IEntityPersister persister, EntityKey keyToLoad, LoadType
options) in 
C:\SourceCode\shamu\vendor\NHibernate\2.1.0.GA\src\NHibernate\Event\Default\DefaultLoadEventListener.cs:line
304
at NHibernate.Event.Default.DefaultLoadEventListener.Load(LoadEvent
event, IEntityPersister persister, EntityKey keyToLoad, LoadType
options) in 
C:\SourceCode\shamu\vendor\NHibernate\2.1.0.GA\src\NHibernate\Event\Default\DefaultLoadEventListener.cs:line
103
at NHibernate.Event.Default.DefaultLoadEventListener.OnLoad(LoadEvent
event, LoadType loadType) in
C:\SourceCode\shamu\vendor\NHibernate\2.1.0.GA\src\NHibernate\Event\Default\DefaultLoadEventListener.cs:line
68
at NHibernate.Impl.SessionImpl.FireLoad(LoadEvent event, LoadType
loadType) in 
C:\SourceCode\shamu\vendor\NHibernate\2.1.0.GA\src\NHibernate\Impl\SessionImpl.cs:line
2485
at NHibernate.Impl.SessionImpl.ImmediateLoad(String entityName, Object
id) in 
C:\SourceCode\shamu\vendor\NHibernate\2.1.0.GA\src\NHibernate\Impl\SessionImpl.cs:line
1361
at NHibernate.Proxy.AbstractLazyInitializer.Initialize() in
C:\SourceCode\shamu\vendor\NHibernate\2.1.0.GA\src\NHibernate\Proxy\AbstractLazyInitializer.cs:line
70
at NHibernate.Proxy.AbstractLazyInitializer.GetImplementation() in
C:\SourceCode\shamu\vendor\NHibernate\2.1.0.GA\src\NHibernate\Proxy\AbstractLazyInitializer.cs:line
154
at NHibernate.ByteCode.Castle.LazyInitializer.Intercept(IInvocation
invocation) in 
C:\SourceCode\shamu\vendor\NHibernate\2.1.0.GA\src\NHibernate.ByteCode.Castle\LazyInitializer.cs:line
61
at Castle.DynamicProxy.AbstractInvocation.Proceed()
at TenantProxy1a719121d7ad431a94e33e6604a711fa.get_Id()


I've tracked it down to what I believe to be
NHibernate\Bytecode\Lightweight\ReflectionOptimizer.cs
in the GenerateSetPropertyValuesMethod method

The only way that exception could get thrown would be if there were
more setters than getters which sounds outrageous.

Or the getters array is never initialized?

Any ideas?

Any other information that I can provide to further diagnose?

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to