]
Max Rydahl Andersen commented on HHH-2316:
------------------------------------------
Your fix sounds reasonable, but we need a testcase to verify it actually fix the issue.
thanks.
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
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: