[ 
https://issues.apache.org/jira/browse/OPENJPA-35?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12476719
 ] 

Pinaki Poddar commented on OPENJPA-35:
--------------------------------------

I am not seeing this particular error anymore -- but I am seeing something else 
that does not appear right. 

a) When datacache is active, even after an instance is deleted via query, the 
entitymanager is committed and cleared, EntityManager find() finds the instance 
-- not from its L1 cache but from its L2 cache.

If this is a known limitation -- it should be documented (could not find it in 
OpenJPA User's guide)

b) When openjpa.datacache=false, the application can still obtain a non-null 
reference to StoreCache, however its delegate is null.
What should OpenJPAEntityManagerFactory.getStoreCache() return when  
openjpa.datacache=false ?

c) delete directly i.e. em.remove() does the 'right' thing i.e. subsequent 
em.find() returns null. 

d) Setting "openjpa.BrokerImpl" to "EvictFromDataCache=true" did not change the 
behavior (nor was expected)

The observations are based on the attached TestCase

> In-memory Delete operation fails with active DataCache
> ------------------------------------------------------
>
>                 Key: OPENJPA-35
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-35
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: datacache, query
>         Environment: Only happens when DataCache is active
>                       <property name="openjpa.DataCache"                
> value="true"/>
>                       <property name="openjpa.RemoteCommitProvider"     
> value="sjvm"/>
>            Reporter: Pinaki Poddar
>            Priority: Critical
>
> Delete through query such as 
>               Query query = em.createQuery("DELETE FROM Node n");
>               query.executeUpdate();
> fails with following exception (only when DataCache is active)
> Exception in thread "main" <4|false|0.0.0> 
> org.apache.openjpa.persistence.ArgumentException: 
> org.apache.openjpa.datacache.QueryCacheStoreQuery
>       at 
> org.apache.openjpa.kernel.QueryImpl.deleteInMemory(QueryImpl.java:1029)
>       at 
> org.apache.openjpa.kernel.ExpressionStoreQuery$DataStoreExecutor.executeDelete(ExpressionStoreQuery.java:665)
>       at 
> org.apache.openjpa.datacache.QueryCacheStoreQuery$QueryCacheExecutor.executeDelete(QueryCacheStoreQuery.java:348)
>       at org.apache.openjpa.kernel.QueryImpl.delete(QueryImpl.java:1012)
>       at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:768)
>       at org.apache.openjpa.kernel.QueryImpl.deleteAll(QueryImpl.java:831)
>       at org.apache.openjpa.kernel.QueryImpl.deleteAll(QueryImpl.java:827)
>       at 
> org.apache.openjpa.kernel.DelegatingQuery.deleteAll(DelegatingQuery.java:544)
>       at 
> org.apache.openjpa.persistence.QueryImpl.executeUpdate(QueryImpl.java:299)
>       at control.Test.clear(Test.java:87)
>       at control.Test.run(Test.java:37)
>       at control.Test.main(Test.java:178)
> Caused by: java.lang.ClassCastException: 
> org.apache.openjpa.datacache.QueryCacheStoreQuery
>       at 
> org.apache.openjpa.kernel.ExpressionStoreQuery$DataStoreExecutor.executeQuery(ExpressionStoreQuery.java:651)
>       at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:949)
>       at 
> org.apache.openjpa.kernel.QueryImpl.deleteInMemory(QueryImpl.java:1018)
>       ... 11 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to