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