[
https://hibernate.onjira.com/browse/HHH-5927?page=com.atlassian.jira.plug...
]
Sanne Grinovero commented on HHH-5927:
--------------------------------------
And if no caching is enabled?
One might not want caching for entities, but still benefit from adding a proper cache
library. We could of course provide our own implementation as a "simple and
easy" one, but one would have to provide a different implementation if special
features such as soft or time based evictions are needed.
If you want to avoid more jars and extensions, I'd vote to use LIRS only and not have
options for different implementations. It seems suited for this case, and we can copy some
code from Infinispan, AFAIR it's a pretty self contained implementation.
Performance risk: Suboptimal synchronization in
org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan
---------------------------------------------------------------------------------------------------------
Key: HHH-5927
URL:
https://hibernate.onjira.com/browse/HHH-5927
Project: Hibernate ORM
Issue Type: Improvement
Components: core
Reporter: Strong Liu
Assignee: Strong Liu
Attachments: hotspot.png
with Order Demo (real-life simulation attempt test app) I have noticed that there is
thread contention on createNamesQuery() which sounds suspicious.
After investigation it boils down to
org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan. It serves as a cache (internal,
not replacable) for queries using LRU algorithm (supplied from Apache utils).
Generally speaking, blocking threads in any sort of caches indicates a problem. From
about 2000 calls, 700 got blocked (which is also not nice for context switching).
I guess, one of the problems is that there is exclusive synchronization in get method:
public synchronized Object get(Object key) {...}
which could be replaced by a more granular read-write lock.
org/hibernate/engine/query/QueryPlanCache.java
org/hibernate/util/SoftLimitMRUCache.java
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira