[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-1813) 2nd level cached collections are locked causing a cache miss
Erik Heckert (JIRA)
noreply at atlassian.com
Fri Sep 29 13:51:24 EDT 2006
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1813?page=comments#action_24674 ]
Erik Heckert commented on HHH-1813:
-----------------------------------
Have a look at the internal class "Lock", method "isGettable(...)".
In my opinion it should read "freshTimestamp > txTimestamp",
not "... < ...".
Greets,
Erik
> 2nd level cached collections are locked causing a cache miss
> ------------------------------------------------------------
>
> Key: HHH-1813
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1813
> Project: Hibernate3
> Type: Bug
> Versions: 3.1
> Environment: Hibernate 3.1, Oracle 10g, Linux
> Reporter: Assaf Berg
> Priority: Critical
> Attachments: testcase.tar.gz
>
>
> Using the second level cache, collections are fetched from the database due to the cached item being locked.
> This happens in the most simple use case:
> 1. Insert an entity with a collection
> 2. Commit.
> 3. Fetch the entity
> I've written a simple test case and see the following in the log file:
> 11:52:47,159 DEBUG [ReadWriteCache] Invalidating: domain.Cat.kittens#539957
> 11:52:47,177 DEBUG [ReadWriteCache] Inserting: domain.Cat#539957
> 11:52:47,179 DEBUG [ReadWriteCache] Inserted: domain.Cat#539957
> 11:52:47,180 DEBUG [ReadWriteCache] Inserting: domain.Kitten#540214
> 11:52:47,180 DEBUG [ReadWriteCache] Inserted: domain.Kitten#540214
> 11:52:47,181 DEBUG [ReadWriteCache] Releasing: domain.Cat.kittens#539957
> 11:52:49,221 DEBUG [ReadWriteCache] Caching: domain.Cat#539957
> 11:52:49,221 DEBUG [ReadWriteCache] Item was already cached: domain.Cat#539957
> 11:52:49,223 DEBUG [ReadWriteCache] Cache lookup: domain.Cat.kittens#539957
> 11:52:49,223 DEBUG [ReadWriteCache] Cached item was locked: domain.Cat.kittens#539957
> 11:52:49,229 DEBUG [ReadWriteCache] Caching: domain.Kitten#540214
> 11:52:49,229 DEBUG [ReadWriteCache] Item was already cached: domain.Kitten#540214
> 11:52:49,230 DEBUG [ReadWriteCache] Caching: domain.Cat.kittens#539957
> 11:52:49,231 DEBUG [ReadWriteCache] Cached: domain.Cat.kittens#539957
> domain.Cat.kittens [C/H/M/P]: 1/0/1/1
> domain.Cat [C/H/M/P]: 1/0/0/1
> domain.Kitten [C/H/M/P]: 1/0/0/1
> This happens whether the collection is mapped as inverse or not.
> I've attached the test case source and hbms (although it might need to be tweaked for the proper DB before running, and I didn't include the dependencies JARs).
> Here's a code excerpt of the interesting part (tx is TransactionTemplate using HibnerateTransactionManager and hibernate is HibernateTemplate from the spring framework):
> tx.execute(new TransactionCallback() {
> public Object doInTransaction(TransactionStatus status) {
> // create a Cat with one Kitten
> Cat cat = new Cat();
> Kitten kitten = new Kitten();
> cat.addKitten(kitten);
>
> hibernate.save(cat);
>
> return null;
> }
> });
>
> Thread.sleep(2000L);
>
> tx.execute(new TransactionCallback() {
> public Object doInTransaction(TransactionStatus status) {
> // load all cats
> List<Cat> allCats = hibernate.loadAll(Cat.class);
> return null;
> }
> });
> I can supply further information if needed.
--
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