[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2021?page=c...
]
Bernard Niset commented on HHH-2021:
------------------------------------
I had the same problem when using EhCache. So, it seems important for EhCache users as
well.
It seems to happen very rarely but it doesn't seem like minor issue as it completely
crashes the application when the use case leading to it happens. Perhaps it should be
investigated how this problem happens (mixing QueryKey elements and entities in the same
cache region ?), but in the meanwhile it seems easy enough to fix.
Please note that the issue happened in a different case for me. I'll paste below the
stacktrace that happened in my case.
2007-10-22 02:09:55,441 ERROR RuntimeException caught: org.hibernate.cache.CacheKey
cannot be cast to
org.hibernate.cache.QueryKey
java.lang.ClassCastException: org.hibernate.cache.CacheKey cannot be cast to
org.hibernate.cache.QueryKey
at org.hibernate.cache.QueryKey.equals(QueryKey.java:54)
at java.util.HashMap.removeEntryForKey(HashMap.java:556)
at java.util.LinkedHashMap.addEntry(LinkedHashMap.java:411)
at java.util.HashMap.put(HashMap.java:385)
at net.sf.ehcache.store.MemoryStore.put(MemoryStore.java:107)
at net.sf.ehcache.Cache.put(Cache.java:569)
at net.sf.ehcache.Cache.put(Cache.java:522)
at org.hibernate.cache.EhCache.put(EhCache.java:119)
at org.hibernate.cache.ReadWriteCache.put(ReadWriteCache.java:159)
at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:156)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:854)
at org.hibernate.loader.Loader.doQuery(Loader.java:729)
at
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
org.hibernate.cache.QueryKey has a fragile equals() method
----------------------------------------------------------
Key: HHH-2021
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2021
Project: Hibernate3
Issue Type: Bug
Components: core
Affects Versions: 3.1.3
Reporter: Kenny MacLeod
Priority: Trivial
This one is no great shakes, but the first line of QueryKey.equals() casts the argument
to QueryKey without checking for its type. As such, the method is fragile.
It should be consistent with CacheKey, which does an instanceof check before the cast.
--
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....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira