Issue Details (XML | Word | Printable)

Key: OPENJPA-35
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Critical Critical
Assignee: Unassigned
Reporter: Pinaki Poddar
Votes: 0
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
OpenJPA

In-memory Delete operation fails with active DataCache

Created: 28/Aug/06 11:36 PM   Updated: 27/May/08 09:06 PM
Return to search
Component/s: datacache, query
Affects Version/s: 0.9.0, 0.9.6
Fix Version/s: 0.9.7

Time Tracking:
Not Specified

File Attachments:
  Size
Zip Archive openjpa-35.test.zip 2007-02-28 09:35 PM Pinaki Poddar 3 kB
Text File openjpa-35.trace.txt 2007-02-28 11:50 PM Pinaki Poddar 5 kB
Environment:
Only happens when DataCache is active
<property name="openjpa.DataCache" value="true"/>
<property name="openjpa.RemoteCommitProvider" value="sjvm"/>

Resolution Date: 10/Mar/07 03:18 PM


 Description  « Hide
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


 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Repository Revision Date User Message
ASF #516750 Sat Mar 10 17:15:49 UTC 2007 pcl OPENJPA-35: fixed bulk update / bulk delete logic to properly clear out the data cache as well as the query cache. We could probably change the logic to remove the query cache mutations, since the data cache clear should automatically clear out the query cache as needed. Also changed the test framework a bit to allow for easier test harness creation without using SingleEMTest, which required providing access to the open brokers from AbstractBrokerFactory.
Files Changed
ADD /incubator/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/SingleEMFTest.java
MODIFY /incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
MODIFY /incubator/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/SingleEMTest.java
MODIFY /incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/QueryCacheStoreQuery.java
ADD /incubator/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/datacache/TestBulkJPQLAndDataCache.java