[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-4836) Infinispan: 2L QueryCache don't considers cached queries which belong to current transaction

Galder Zamarreno (JIRA) noreply at atlassian.com
Thu Feb 11 03:21:30 EST 2010


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-4836?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=35531#action_35531 ] 

Galder Zamarreno commented on HHH-4836:
---------------------------------------

I believe the code that you're refering was there from the JBoss Cache days where get operations acquired locks, so I suspect that the aim to suspend the transaction was so that locks acquired as a result of the get were not held during the transaction. So, the decision was taken to suspend the tx and execute the get. I believe we should be able to execute a get() without suspending a tx. I'm double checking this with the person who wrote the original code.

> Infinispan: 2L QueryCache don't considers cached queries which belong to current transaction
> --------------------------------------------------------------------------------------------
>
>                 Key: HHH-4836
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-4836
>             Project: Hibernate Core
>          Issue Type: Bug
>          Components: caching (L2)
>    Affects Versions: 3.5.0.Beta-1, 3.5.0-Beta-2, 3.5.0-Beta-3
>         Environment: 3.5.0.Beta3, SQLServerr2008, integration with JTA
>            Reporter: Guenther Demetz
>            Assignee: Galder Zamarreno
>   Original Estimate: 2 hours
>  Remaining Estimate: 2 hours
>
> When looking for a cached Query in 2L-cache,
> QueryResultsRegionImpl(BaseRegion) does temporary suspend the current transaction.
> QueryResultsRegionImpl(BaseRegion).suspendAndGet(Object, FlagAdapter, boolean) line: 205	
> In this way only committed queries from already closed transactions are considered to be hit.
> Cached queries put by the current transaction are totally ignored!
> This is in my opinion a bug, because it changes behavior and degrades the efficiency of the 2L QueryCache 
> in respect to other 2L-implementations (for example EHCache).
> Furthermore there is no reason to ignore cached queries deriving from current transaction:
> the up-to-date-ness is checked anyway by the StandardQueryCache.isUpToDate() call.
> Proposed solution:
> simply not suspend current transaction when looking for cached querys,
> then queries put by the current transaction are automatically considered as candidates for a hit.

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