jody, did you also fix this in trunk? I'm assuming that all bugs fixed in 2.3.x also work in and got applied to trunk
txs and LieGrue, strub ----- Original Message ----- > From: "[email protected]" <[email protected]> > To: [email protected] > Cc: > Sent: Tuesday, 29 October 2013, 17:23 > Subject: svn commit: r1536793 - in /openjpa/branches/2.3.x: > openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ > openjpa-kernel/src/main/java/org/apache/openjpa/conf/ > openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ > > Author: jgrassel > Date: Tue Oct 29 16:23:36 2013 > New Revision: 1536793 > > URL: http://svn.apache.org/r1536793 > Log: > OPENJPA-2414: FinderCache does not consider active Fetch Groups/FetchPlan > added > Fields > > Modified: > > openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java > > openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java > > openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java > > openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java > > openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java > > Modified: > openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java > URL: > http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java?rev=1536793&r1=1536792&r2=1536793&view=diff > ============================================================================== > --- > openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java > > (original) > +++ > openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java > > Tue Oct 29 16:23:36 2013 > @@ -109,7 +109,7 @@ public class FinderCacheImpl > } > > // FinderCache only operates with Default Fetch Plans > - if (!fetch.isDefaultPUFetchGroupConfigurationOnly()) { > + if (!fetch.isFetchConfigurationSQLCacheAdmissible()) { > return null; > } > > @@ -152,7 +152,7 @@ public class FinderCacheImpl > } > > // FinderCache only operates with Default Fetch Plans > - if (!fetch.isDefaultPUFetchGroupConfigurationOnly()) { > + if (!fetch.isFetchConfigurationSQLCacheAdmissible()) { > return null; > } > > > Modified: > openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java > URL: > http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java?rev=1536793&r1=1536792&r2=1536793&view=diff > ============================================================================== > --- > openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java > > (original) > +++ > openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/conf/Compatibility.java > > Tue Oct 29 16:23:36 2013 > @@ -77,6 +77,7 @@ public class Compatibility { > private boolean _singletonLifecycleEventManager = false; > private boolean _filterPCRegistryClasses = false; // OPENJPA-2288 > private boolean _returnNullOnEmptyAggregateResult = true; // > OPENJPA-1794 > + private boolean _cacheNonDefaultFetchPlanQueries = false; // OPENJPA-2414 > > /** > * Whether to require exact identity value types when creating object > @@ -763,4 +764,18 @@ public class Compatibility { > public void setReturnNullOnAggregateResult(boolean > returnNullOnEmptyAggregateResult) { > _returnNullOnEmptyAggregateResult = returnNullOnEmptyAggregateResult; > } > + > + /** > + * Whether the SQL generated for queries executed with a modified fetch > plan are cached. > + */ > + public boolean getCacheNonDefaultFetchPlanQueries() { > + return _cacheNonDefaultFetchPlanQueries; > + } > + > + /** > + * Whether the SQL generated for queries executed with a modified fetch > plan are cached. > + */ > + public void setCacheNonDefaultFetchPlanQueries(boolean bool) { > + _cacheNonDefaultFetchPlanQueries = bool; > + } > } > > Modified: > openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java > URL: > http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java?rev=1536793&r1=1536792&r2=1536793&view=diff > ============================================================================== > --- > openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java > > (original) > +++ > openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingFetchConfiguration.java > > Tue Oct 29 16:23:36 2013 > @@ -595,4 +595,12 @@ public class DelegatingFetchConfiguratio > throw translate(re); > } > } > + > + public boolean isFetchConfigurationSQLCacheAdmissible() { > + try { > + return _fetch.isFetchConfigurationSQLCacheAdmissible(); > + } catch (RuntimeException re) { > + throw translate(re); > + } > + } > } > > Modified: > openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java > URL: > http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java?rev=1536793&r1=1536792&r2=1536793&view=diff > ============================================================================== > --- > openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java > > (original) > +++ > openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfiguration.java > > Tue Oct 29 16:23:36 2013 > @@ -474,4 +474,9 @@ public interface FetchConfiguration > * @since 0.4.1 > */ > public FetchConfiguration traverse(FieldMetaData fm); > + > + /** > + * Whether SQL generated by the FetchConfiguration's current > configuration should be cached. > + */ > + public boolean isFetchConfigurationSQLCacheAdmissible(); > } > > Modified: > openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java > URL: > http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java?rev=1536793&r1=1536792&r2=1536793&view=diff > ============================================================================== > --- > openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java > > (original) > +++ > openjpa/branches/2.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java > > Tue Oct 29 16:23:36 2013 > @@ -148,7 +148,8 @@ public class FetchConfigurationImpl > public boolean fetchGroupIsPUDefault = false; > public boolean extendedPathLookup = false; > public DataCacheRetrieveMode cacheRetrieveMode = > DataCacheRetrieveMode.USE; > - public DataCacheStoreMode cacheStoreMode = DataCacheStoreMode.USE; > > > + public DataCacheStoreMode cacheStoreMode = DataCacheStoreMode.USE; > + public boolean cacheNonDefaultFetchPlanQueries = false; > } > > private final ConfigurationState _state; > @@ -193,6 +194,8 @@ public class FetchConfigurationImpl > > addFetchGroups(Arrays.asList(fetchGroupList)); > setMaxFetchDepth(conf.getMaxFetchDepth()); > + > + _state.cacheNonDefaultFetchPlanQueries = > conf.getCompatibilityInstance().getCacheNonDefaultFetchPlanQueries(); > } > > /** > @@ -201,6 +204,7 @@ public class FetchConfigurationImpl > public Object clone() { > FetchConfigurationImpl clone = newInstance(null); > clone._state.ctx = _state.ctx; > + clone._state.cacheNonDefaultFetchPlanQueries = > _state.cacheNonDefaultFetchPlanQueries; > clone._parent = _parent; > clone._fromField = _fromField; > clone._fromType = _fromType; > @@ -346,7 +350,7 @@ public class FetchConfigurationImpl > return addFetchGroup(name, true); > } > > - public FetchConfiguration addFetchGroup(String name, boolean > recomputeIsDefault) { > + private FetchConfiguration addFetchGroup(String name, boolean > recomputeIsDefault) { > if (StringUtils.isEmpty(name)) > throw new UserException(_loc.get("null-fg")); > > @@ -383,7 +387,7 @@ public class FetchConfigurationImpl > return removeFetchGroup(group, true); > } > > - public FetchConfiguration removeFetchGroup(String group, boolean > recomputeIsDefault) { > + private FetchConfiguration removeFetchGroup(String group, boolean > recomputeIsDefault) { > lock(); > try { > if (_state.fetchGroups != null) { > @@ -482,6 +486,15 @@ public class FetchConfigurationImpl > public boolean isDefaultPUFetchGroupConfigurationOnly() { > return _state.fetchGroupIsPUDefault; > } > + > + public boolean isFetchConfigurationSQLCacheAdmissible() { > + if (_state == null || _state.cacheNonDefaultFetchPlanQueries) { > + return false; > + } else { > + // Only pctx-default matching FetchConfiguration generated SQL > is > cache permissible > + return _state.fetchGroupIsPUDefault; > + } > + } > > public Set<String> getFields() { > if (_state.fields == null) return Collections.emptySet(); > @@ -518,6 +531,7 @@ public class FetchConfigurationImpl > _state.fields = new HashSet<String>(); > _state.fields.addAll(fields); > } finally { > + verifyDefaultPUFetchGroups(); > unlock(); > } > return this; >
