[ https://issues.apache.org/jira/browse/OPENJPA-1511?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12840696#action_12840696
]
Rick Curtis commented on OPENJPA-1511:
--------------------------------------
I don't think that calling Cache.evict() should also remove an Entity from the L1 cache. The
javadoc for javax.persistence.Cache.evict(..) doesn't mention anything about removing the
provided Entity from the persistence context.
I think the problem here is as follows:
* Entity [E1] is in the L2 cache and is managed by the current persistence context (L1 cache).
* Evict [E1] from the L2 cache. [E1] is still in the L1 cache.
* Execute a cached query which will return [E1]. This *should* result in [E1] being placed
back in the L2 cache, but it isn't.
Make sense?
> Executing a cached query doesn't properly cache results after DataCache eviction
> --------------------------------------------------------------------------------
>
> Key: OPENJPA-1511
> URL: https://issues.apache.org/jira/browse/OPENJPA-1511
> Project: OpenJPA
> Issue Type: Bug
> Affects Versions: 2.0.0-beta
> Reporter: Rick Curtis
> Assignee: Ravi P Palacherla
> Attachments: TestCache.java
>
>
> When doing some testing I found that the QueryCache sometimes doesn't put results into
the DataCache.
> I haven't had time to debug the problem, but I'm opening this JIRA so I can attach the
test case I've created.
> The test scenario is as follows:
> String query = "Select t FROM Item t where 1=1 ORDER BY t.id";
> items = em.createQuery(query,Item.class).getResultList();
> assertTrue(storeCache.contains(Item.class, items.get(0).getId()));
> // Make sure that all of the results are in the DataCache.
> for(Item o : items){
> assertTrue(storeCache.contains(Item.class, o.getId()));
> }
> storeCache.evict(Item.class,items.get(0).getId());
> // Evict one result
> assertFalse(storeCache.contains(Item.class,items.get(0).getId()));
>
> // Executing the same query should re-populate the datacache
> items = em.createQuery(query,Item.class).getResultList();
> assertTrue(storeCache.contains(Item.class, items.get(0).getId())); // fails here
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
|