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

Joel Caplin (JIRA) noreply at atlassian.com
Tue Dec 19 13:08:05 EST 2006


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-2316?page=comments#action_25669 ] 

Joel Caplin commented on HHH-2316:
----------------------------------

To clarify a few points from above:

1) I'm not calling type.isEqual() myself - was referring to when equals() calls it.

2) The Type-implementing class which causes this exception to be thrown is ComponentType: the "x" and "y" arguments are of different types

3) Only future calls which touch the same cache regions yield a PropertyAccessException - not *all* hibernate calls, as I alluded to above.


> 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
>         Type: Bug

>   Components: core
>     Versions: 3.2.1
>  Environment: Windows XP / Sybase 12.5 / Java 1.5.0_09 / ehcache 1.2.4
>     Reporter: Joel Caplin
>     Priority: Critical

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