[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-2316) org.hibernate.cache.CacheKey.equals() can cause PropertyAccessException to be thrown

Steve Ebersole (JIRA) noreply at atlassian.com
Wed May 9 13:30:04 EDT 2007


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

Steve Ebersole commented on HHH-2316:
-------------------------------------

Well the simple workaround is to cache them in separate regions.  This is what Hibernate does normally.  I'll fix this issue as you suggested because what you said makes sense.  However, you should note that I will not guarentee that what you are trying (sharing cache regions) will work in all cases.  

What was the reasoning for sharing regions anyway?

> org.hibernate.cache.CacheKey.equals() can cause PropertyAccessException to be thrown
> ------------------------------------------------------------------------------------
>
>                 Key: HHH-2316
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2316
>             Project: Hibernate3
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 3.2.1
>         Environment: Windows XP / Sybase 12.5 / Java 1.5.0_09 / ehcache 1.2.4
>            Reporter: Joel Caplin
>            Assignee: Steve Ebersole
>         Attachments: cacheTest.zip
>
>
> org.hibernate.cache.CacheKey.equals() uses lazy evaluation in its return clause: it first calls type.isEqual() and, if true, then calls entityOrRoleName.equals().
> I am having difficulty reproducing this bug in the form of a test case owing to the complexity of our model and the large amount of data in question-- however, in certain circumstances, where the entityOrRoleName's are NOT equal, calling type.isEqual() yields a PropertyAccessException.
> When this bug manifests itself (a PropertyAccessException is thrown), it causes ALL future Hibernate requests to throw a similar exception, thus rendering our service unusable.
> This is fixed when the lazy evaluation is done the other way around: call entityOrRoleName.equals() prior to type.isEqual() - cheap string comparision vs an expensive call which has a large call tree under it.

-- 
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