You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by fa...@apache.org on 2008/05/22 10:05:01 UTC
svn commit: r659036 -
/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java
Author: fancy
Date: Thu May 22 01:05:00 2008
New Revision: 659036
URL: http://svn.apache.org/viewvc?rev=659036&view=rev
Log:
OPENJPA-574 Cached object in DataCache not evicted due to StatementBatching not reporting OptimisticException
Handle (-2) updateCount returned from Batching for Oracle.
Got a ClassCasstException while testing multiple entries in DataCache needed to be removed due to OptimisticException.
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java?rev=659036&r1=659035&r2=659036&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java Thu May 22 01:05:00 2008
@@ -270,6 +270,7 @@
idList.add(holder.sm.getObjectId());
}
+ List<PCDataHolder> removes = new ArrayList<PCDataHolder>();
Map<Object,DataCachePCData> pcdatas = cache.getAll(idList);
for (Entry<Object,DataCachePCData> entry : pcdatas.entrySet()) {
Integer index = ids.get(entry.getKey());
@@ -277,10 +278,13 @@
PCDataHolder holder = (PCDataHolder) holders.get(index);
if (oldpc != null && compareVersion(holder.sm,
holder.sm.getVersion(), oldpc.getVersion()) == VERSION_EARLIER)
- holders.remove(index);
+ removes.add(holder);
else
holders.set(index, holder.pcdata);
}
+
+ for (PCDataHolder holder : removes)
+ holders.remove(holder);
}
/**