[hibernate-issues] [Hibernate-JIRA] Created: (HHH-5927) Performance risk: Suboptimal synchronization in org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan

Strong Liu (JIRA) noreply at atlassian.com
Mon Feb 14 05:34:08 EST 2011


Performance risk: Suboptimal synchronization in org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan
---------------------------------------------------------------------------------------------------------

                 Key: HHH-5927
                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5927
             Project: Hibernate Core
          Issue Type: Improvement
          Components: core
            Reporter: 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.
-
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