[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-2557) NPE in IdentityMap.IdentityKey.equals()

Max Rydahl Andersen (JIRA) noreply at atlassian.com
Wed Apr 11 14:33:04 EDT 2007


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-2557?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_26690 ] 

Max Rydahl Andersen commented on HHH-2557:
------------------------------------------

You might be right that we need to implement a null check BUT the whole hibernate testsuite runs to completion without running into a null key state so either you have done something "bad" or you triggered some execution path that is not good.

If we go out and just fix this null check we might be hiding some very hard to find bug in either your or hibernates code. 

Why don't you just reduce your test you apparently have to show what causes the error ?

> NPE in IdentityMap.IdentityKey.equals()
> ---------------------------------------
>
>                 Key: HHH-2557
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2557
>             Project: Hibernate3
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 3.2.3
>            Reporter: Anders Wallgren
>         Attachments: IdentityMapTest.java
>
>
> The equals method in org.hibernate.util.IdentityMap.IdentityKey doesn't handle null objects: 
> {code}
> java.lang.NullPointerException
> 	at org.hibernate.util.IdentityMap$IdentityKey.equals(IdentityMap.java:103)
> 	at java.util.HashMap.get(HashMap.java:305)
> 	at org.apache.commons.collections.SequencedHashMap.get(SequencedHashMap.java:288)
> 	at org.hibernate.util.IdentityMap.get(IdentityMap.java:135)
> 	at org.hibernate.engine.StatefulPersistenceContext.getEntry(StatefulPersistenceContext.java:355)
> 	at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:54)
> 	at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
> 	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)
> 	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)
> 	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:301)
> 	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
> 	at com.electriccloud.dao.HibernateFlushListener.onFlush(HibernateFlushListener.java:49)
> 	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
> 	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
> 	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
> 	at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:575)
> 	at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:651)
> 	at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:621)
> 	at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:311)
> 	at com.electriccloud.dao.TransactionAspect.withTransaction(TransactionAspect.java:121)
> 	at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:576)
> 	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:562)
> 	at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:60)
> 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
> 	at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:76)
> 	at com.electriccloud.operations.ConcurrentRetryAspect.performWithRetry(ConcurrentRetryAspect.java:168)
> 	at sun.reflect.GeneratedMethodAccessor56.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:576)
> 	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:562)
> 	at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:60)
> 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
> 	at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:76)
> 	at com.electriccloud.operations.OperationTimingAspect.logOperationPerformance(OperationTimingAspect.java:110)
> 	at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:576)
> 	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:562)
> 	at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:60)
> 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
> 	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
> 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
> 	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:203)
> 	at $Proxy97.perform(Unknown Source)
> 	at com.electriccloud.operations.OperationInvoker.invoke(OperationInvoker.java:190)
> 	at com.electriccloud.operations.OperationCaller.call(OperationCaller.java:126)
> 	at com.electriccloud.operations.OperationCaller.call(OperationCaller.java:36)
> 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
> 	at java.lang.Thread.run(Thread.java:619)
> 	at com.electriccloud.util.queue.CommanderThread.run(CommanderThread.java:78)
> {code}

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the hibernate-issues mailing list