You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by cu...@apache.org on 2009/12/08 19:59:11 UTC
svn commit: r888520 - in
/openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc:
kernel/JDBCStoreManager.java meta/strats/RelationFieldStrategy.java
Author: curtisr7
Date: Tue Dec 8 18:59:10 2009
New Revision: 888520
URL: http://svn.apache.org/viewvc?rev=888520&view=rev
Log:
OPENJPA-1421: Reduce lock contention in JDBCStoreManager
Modified:
openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreManager.java
openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationFieldStrategy.java
Modified: openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreManager.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreManager.java?rev=888520&r1=888519&r2=888520&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreManager.java (original)
+++ openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreManager.java Tue Dec 8 18:59:10 2009
@@ -504,15 +504,19 @@
if (sel == null) return null;
return sel.execute(this, fetch, params);
}
-
+
+ Map<SelectKey, Select> selectImplCacheMap = null;
private Select newSelect(OpenJPAStateManager sm,
ClassMapping mapping, JDBCFetchConfiguration fetch, int subs,
List params) {
if (!_isQuerySQLCache)
return newSelect(sm, mapping, fetch, subs);
- Map<SelectKey, Select> selectImplCacheMap =
- getCacheMapFromQuerySQLCache(JDBCStoreManager.class);
+ if (selectImplCacheMap == null) {
+ selectImplCacheMap =
+ getCacheMapFromQuerySQLCache(JDBCStoreManager.class);
+ }
+
JDBCFetchConfiguration fetchClone = new JDBCFetchConfigurationImpl();
fetchClone.copy(fetch);
SelectKey selKey = new SelectKey(mapping, null, fetchClone);
Modified: openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationFieldStrategy.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationFieldStrategy.java?rev=888520&r1=888519&r2=888520&view=diff
==============================================================================
--- openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationFieldStrategy.java (original)
+++ openjpa/branches/1.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/RelationFieldStrategy.java Tue Dec 8 18:59:10 2009
@@ -601,7 +601,8 @@
else
sm.setIntermediate(field.getIndex(), oid);
}
-
+
+ Map<JDBCStoreManager.SelectKey, Object[]> relationFieldUnionCache = null;
public void load(final OpenJPAStateManager sm, final JDBCStore store,
final JDBCFetchConfiguration fetch)
throws SQLException {
@@ -628,9 +629,11 @@
if (!((JDBCStoreManager)store).isQuerySQLCacheOn())
union = newUnion(sm, store, fetch, rels, subs, resJoins);
else {
- Map<JDBCStoreManager.SelectKey, Object[]> relationFieldUnionCache =
- ((JDBCStoreManager)store).getCacheMapFromQuerySQLCache(
- RelationFieldStrategy.class);
+ if (relationFieldUnionCache == null) {
+ relationFieldUnionCache =
+ ((JDBCStoreManager) store)
+ .getCacheMapFromQuerySQLCache(RelationFieldStrategy.class);
+ }
boolean found = true;
JDBCFetchConfiguration fetchClone = new JDBCFetchConfigurationImpl();
fetchClone.copy(fetch);