I cc'd the owners of 2.2.x and 2.3.x to see if either of them will merge it
into their branches.


On Mon, Jun 16, 2014 at 2:50 AM, LYALIKOV, Oleg (Oleg) <
oleg.lyali...@alcatel-lucent.com> wrote:

> Hello
>
> I would appreciate if anybody can tell if it is possible to merge this fix
> to 2.2.x or 2.3.x branches and what is required to do that merge...
> Without fix there is a big data cache performance impact for majority of
> systems which make use of data cache.
>
> Thanks,
> Oleg
>
> -----Original Message-----
> From: LYALIKOV, Oleg (Oleg) [mailto:oleg.lyali...@alcatel-lucent.com]
> Sent: Tuesday, May 27, 2014 2:47 PM
> To: users@openjpa.apache.org
> Subject: RE: Data cache does not work in OpenJPA 2.2.2
>
> Hi Rick,
>
> Yes, it passes with latest 2.4.0-SNAPSHOT, and OpenJPA log file does not
> contain SQL queries while executing JPQL query for the second time.
>
> So do you know when this fix will be available in stable versions? And for
> which stable versions?
>
> Thanks,
> Oleg
>
> -----Original Message-----
> From: Rick Curtis [mailto:curti...@gmail.com]
> Sent: Tuesday, May 27, 2014 5:12 AM
> To: users
> Subject: Re: Data cache does not work in OpenJPA 2.2.2
>
> Does this test pass on trunk? This sounds pretty familiar to a change[1]
> that I put into trunk.
>
> [1] https://issues.apache.org/jira/browse/OPENJPA-2285
>
>
> On Mon, May 26, 2014 at 9:11 AM, LYALIKOV, Oleg (Oleg) <
> oleg.lyali...@alcatel-lucent.com> wrote:
>
> > Forgot to update project archive to successfully run in OpenJPA 2.0.0
> > - you need to not only change openjpa version in pom file but also add
> > property <property name="openjpa.RemoteCommitProvider" value="sjvm"/>
> > in persistence.xml file (and also use "-XX:-UseSplitVerifier" as
> > project configured to be compiled by jdk 7)
> >
> > Thanks,
> > Oleg
> >
> > From: LYALIKOV, Oleg (Oleg)
> > Sent: Monday, May 26, 2014 5:56 PM
> > To: users@openjpa.apache.org
> > Subject: Data cache does not work in OpenJPA 2.2.2
> >
> > Hello,
> >
> > I have a simple project with several entities and several relations (a
> > little more complex than trivial) and when I execute query "SELECT obj
> > FROM MyEntity obj" several times OpenJPA still executes SQL queries on
> > database to retrieve some data.
> >
> > Some details: here are entities (you can find full descriptions in the
> > attached project):
> > Person 1->* DocumentBase
> > Document 1->* Link1
> > Document 1->* Link2
> > and Document entity inherits from DocumentBase entity. All relations
> > are eager OneToMany.
> >
> > I create one Person with one Document which also has one Link1 and one
> > Link2 objects. Then I execute query "SELECT DISTINCT obj FROM Person obj"
> > twice and still OpenJPA executes SQL queries for the second time to
> > retrieve Document/Link1/Link2 data. It makes 2 SQL queries. If I use
> > following setting (which I primarily interested in):
> > <property name="openjpa.jdbc.SubclassFetchMode" value="none"/> then
> > these queries are:
> >
> > SELECT t0.docName, t1.DOCUMENT_ID, t2.id
> >     FROM Document t0 LEFT OUTER JOIN Document_Link1 t1 ON t0.id =
> > t1.DOCUMENT_ID
> >         LEFT OUTER JOIN Link1 t2 ON t1.LINK1_ID = t2.id
> >     WHERE t0.id = ?
> >     ORDER BY t1.DOCUMENT_ID ASC
> > [params=(String) 51]
> >
> > and
> >
> > SELECT t1.id
> >     FROM Document_Link2 t0 INNER JOIN Link2 t1 ON t0.LINK2_ID = t1.id
> >     WHERE t0.DOCUMENT_ID = ?
> > [params=(String) 51]
> >
> > if I use default value for "openjpa.jdbc.SubclassFetchMode" property
> > then anyway 2 queries are executed:
> >
> > SELECT t1.id
> >     FROM Document_Link1 t0 INNER JOIN Link1 t1 ON t0.LINK1_ID = t1.id
> >     WHERE t0.DOCUMENT_ID = ?
> > [params=(String) 51]
> >
> > and
> >
> > SELECT t1.id
> >     FROM Document_Link2 t0 INNER JOIN Link2 t1 ON t0.LINK2_ID = t1.id
> >     WHERE t0.DOCUMENT_ID = ?
> > [params=(String) 51]
> >
> > If there are a lot of such objects and a lot of such relations then
> > application just spends all its time in database. It is serious
> > performance impact...
> >
> > There is junit test in the attached project which fails in OpenJPA
> > 2.2.2 and it passes in OpenJPA 2.0.0 so it looks like a regression.
> >
> > After some analysis it seems that the change was in
> > DataCacheStoreManager::load method. In the OpenJPA 2.0.0 the method
> > cacheStateManager is executed which properly put fully loaded objects
> > in cache while in OpenJPA 2.2.2 it firstly check CacheStoreMode, the
> > value is "USE", the objects are "alreadyCached" (they are actually in
> > cache but only partially loaded) and so OpenJPA does not update cache
> > and so only partially loaded objects are in cache and so OpenJPA
> > always executes SQL queries to complete these objects on every query.
> >
> > So should I post it as a bug in issue tracker? And also maybe you know
> > some workaround for this issue?
> >
> > Thanks,
> > Oleg
> >
>
>
>
> --
> *Rick Curtis*
>



-- 
*Rick Curtis*

Reply via email to