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.
