ArrayIndexOutOfBoundsException on flush stage

Description

Occasionally a transaction fails on flush stage with Exception like this:

Caused by: java.lang.ArrayIndexOutOfBoundsException: 2674
at org.hibernate.engine.internal.EntityEntryContext.reentrantSafeEntityEntries(EntityEntryContext.java:260) [hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.engine.internal.StatefulPersistenceContext.reentrantSafeEntityEntries(StatefulPersistenceContext.java:1053) [hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.event.internal.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:153) [hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:91) [hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:55) [hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1218) [hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:1335) [hibernate-entitymanager-4.3.0.Final.jar:4.3.0.Final]
at org.jboss.as.jpa.container.AbstractEntityManager.flush(AbstractEntityManager.java:445) [wildfly-jpa-8.0.0.CR1.jar:8.0.0.CR1]
at <our code>

Our code in the last line is calling EntityManager.flush().

Replication steps are a bit hard to come by, because most of the similar operations work fine, and our software is so complex it's hard to run a one operation exactly the same again. But considering AIOOBE is often relatively simple error, you might be able to figure it out from the line number alone, I filed it here.

Activity

Show:

Former user June 3, 2016 at 6:36 PM

This could be due to HHH-10795.

Former user August 24, 2015 at 10:41 PM

, this behavior is expected with multi-threaded access.

I have not heard of anyone mentioning this happening with a single thread. I'm going to reject for now. If someone can reproduce this with a single-thread, then please provide a test case and I'll reopen.

madhavi kasivajjula August 23, 2015 at 8:54 PM

Hi Gail Badner,

This is in a multi-threaded access. I have some code which I needed to improve performance. Initially this code was running in serial. I used parallelization, where a group of threads executes this code in parallel, that' when I get this issue.

Former user August 19, 2015 at 5:38 AM

, do you have a reproducible test case that does not involve multi-threaded access to the session? If so, please attach a runnable test case.

madhavi kasivajjula August 14, 2015 at 8:55 PM

Hi, is this issue resolved? I am using version 5.0.0.CR3 and I still see this error

java.lang.ArrayIndexOutOfBoundsException: 8135
at org.hibernate.engine.internal.EntityEntryContext.reentrantSafeEntityEntries(EntityEntryContext.java:251) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.StatefulPersistenceContext.reentrantSafeEntityEntries(StatefulPersistenceContext.java:1091) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.StatefulPersistenceContext.getOwnerId(StatefulPersistenceContext.java:1117) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.property.access.internal.PropertyAccessStrategyBackRefImpl$GetterImpl.getForInsert(PropertyAccessStrategyBackRefImpl.java:100) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.tuple.entity.AbstractEntityTuplizer.getPropertyValuesToInsert(AbstractEntityTuplizer.java:517) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.tuple.entity.PojoEntityTuplizer.getPropertyValuesToInsert(PojoEntityTuplizer.java:241) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.persister.entity.AbstractEntityPersister.getPropertyValuesToInsert(AbstractEntityPersister.java:4606) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:251) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:178) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:109) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.jpa.event.internal.core.JpaMergeEventListener.saveWithGeneratedId(JpaMergeEventListener.java:56) ~[hibernate-entitymanager-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.event.internal.DefaultMergeEventListener.saveTransientEntity(DefaultMergeEventListener.java:258) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.event.internal.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:238) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:176) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:849) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:831) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.spi.CascadingActions$6.cascade(CascadingActions.java:260) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:379) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:304) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:146) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:412) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:344) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:307) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:146) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:95) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.event.internal.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:484) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.event.internal.DefaultMergeEventListener.entityIsPersistent(DefaultMergeEventListener.java:205) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:179) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:849) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:831) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.spi.CascadingActions$6.cascade(CascadingActions.java:260) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:379) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:304) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:146) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:412) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:344) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:307) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:146) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:95) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.event.internal.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:484) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.event.internal.DefaultMergeEventListener.entityIsPersistent(DefaultMergeEventListener.java:205) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:179) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:849) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:831) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.spi.CascadingActions$6.cascade(CascadingActions.java:260) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:379) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:304) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:146) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:412) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:344) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:307) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:146) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:95) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.event.internal.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:484) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.event.internal.DefaultMergeEventListener.entityIsPersistent(DefaultMergeEventListener.java:205) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:179) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:72) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:839) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:821) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:826) ~[hibernate-core-5.0.0.CR3.jar:5.0.0.CR3]
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:1161) ~[hibernate-entitymanager-5.0.0.CR3.jar:5.0.0.CR3]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_67]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_67]
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240) ~[spring-orm-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at com.sun.proxy.$Proxy49.merge(Unknown Source) ~[na:na]
at com.lifetech.apps.flash.dao.impl.AbstractDaoImpl.update(AbstractDaoImpl.java:298) ~[AbstractDaoImpl.class:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_67]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_67]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:319) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at com.lifetech.apps.flash.service.util.BusinessProfiler.profile(BusinessProfiler.java:25) ~[BusinessProfiler.class:na]
at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source) ~[na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_67]
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at com.sun.proxy.$Proxy51.update(Unknown Source) ~[na:na]
at com.lifetech.apps.flash.service.impl.ProjectServiceImpl.updateProject(ProjectServiceImpl.java:329) ~[ProjectServiceImpl.class:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_67]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_67]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:319) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at com.lifetech.apps.flash.service.util.BusinessProfiler.profile(BusinessProfiler.java:25) ~[BusinessProfiler.class:na]
at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source) ~[na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_67]
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) ~[spring-tx-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:64) ~[spring-security-core-3.1.3.RELEASE.jar:3.1.3.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) ~[spring-aop-3.1.2.RELEASE.jar:3.1.2.RELEASE]
at com.sun.proxy.$Proxy71.updateProject(Unknown Source) ~[na:na]
at com.lifetech.apps.flash.controller.ProjectController.updateProject(ProjectController.java:440) ~[ProjectController.class:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_67]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_67]

Rejected

Details

Assignee

Reporter

Components

Affects versions

Priority

Created January 20, 2014 at 1:04 PM
Updated December 3, 2024 at 9:06 AM
Resolved August 24, 2015 at 10:41 PM