openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Patrick Linskey" <plins...@bea.com>
Subject RE: Possible problem with ddl with only a jta-datasource and sequences
Date Tue, 24 Apr 2007 21:52:30 GMT
> suspend/resume) and it has recently provided the means to 
> execute a Runnable in a new Tx (via the "runUnderUOW" feature)

Yay!

It should be very easy to restructure our existing code to move the
relevant logic to a Runnable.

-Patrick

-- 
Patrick Linskey
BEA Systems, Inc.
_______________________________________________________________________
Notice:  This email message, together with any attachments, may contain
information  of  BEA Systems,  Inc.,  its subsidiaries  and  affiliated
entities,  that may be confidential,  proprietary,  copyrighted  and/or
legally privileged, and is intended solely for the use of the individual
or entity named in this message. If you are not the intended recipient,
and have received this message in error, please immediately return this
by email and then delete it. 

> -----Original Message-----
> From: Kevin Sutter [mailto:kwsutter@gmail.com] 
> Sent: Tuesday, April 24, 2007 2:18 PM
> To: open-jpa-dev@incubator.apache.org
> Subject: Re: Possible problem with ddl with only a 
> jta-datasource and sequences
> 
> Patrick,
> 
> On 4/24/07, Patrick Linskey <plinskey@bea.com> wrote:
> >
> > > One way to do this would
> > > be to package the work up in a Runnable and execute it in an 
> > > appropriate transactional environment.  It might be easier to 
> > > understand if the sequence code had a similar implementation.
> >
> > We talked about this in a thread several months ago. I 
> think that the 
> > conclusion was that it'd be neat to make our ManagedRuntime 
> interface 
> > have a runInNewTransaction(Runnable) method, and to move 
> things to use 
> > that instead of doing tx logic directly inside the sequence classes.
> > This would be an easy change; the lack of a concrete need (i.e., a 
> > server that both denied transactional control and provided 
> a means to 
> > execute a Runnable in a new tx) prevented us from changing things 
> > around.
> 
> 
> A "concrete need" is surfacing with WebSphere.  WebSphere 
> does not allow for direct transactional control (ie. 
> suspend/resume) and it has recently provided the means to 
> execute a Runnable in a new Tx (via the "runUnderUOW"
> feature).  Although WebSphere may be the exception to the 
> rule, we are planning on providing the mechanism so that 
> OpenJPA can play in this game.
> 
> Kevin
> 
> -Patrick
> >
> > --
> > Patrick Linskey
> > BEA Systems, Inc.
> > 
> ______________________________________________________________________
> > _
> > Notice:  This email message, together with any attachments, may 
> > contain information  of  BEA Systems,  Inc.,  its 
> subsidiaries  and  
> > affiliated entities,  that may be confidential,  proprietary,  
> > copyrighted  and/or legally privileged, and is intended 
> solely for the 
> > use of the individual or entity named in this message. If 
> you are not 
> > the intended recipient, and have received this message in error, 
> > please immediately return this by email and then delete it.
> >
> > > -----Original Message-----
> > > From: David Jencks [mailto:david_jencks@yahoo.com]
> > > Sent: Tuesday, April 24, 2007 10:53 AM
> > > To: open-jpa-dev@incubator.apache.org
> > > Subject: Possible problem with ddl with only a jta-datasource and 
> > > sequences
> > >
> > > Using derby, jta transactions (in geronimo), a table sequence, 
> > > autocreation of tables, and only a jta-datasource, I get errors 
> > > complaining that the sequence table doesn't exist.
> > >
> > > Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException:
> > > Table/ View 'OPENJPASEQ' does not exist. {SELECT 
> SEQUENCE_VALUE FROM 
> > > OPENJPASEQ WHERE ID = ? FOR UPDATE WITH RR} [code=20000, 
> > > state=42X05]
> > >
> > > If I supply a non-jta-datasource everything works fine.
> > >
> > > My current theory about why this is happening is that the ddl to 
> > > create all the tables is executed in a connection from the
> > > jta- datasource that's enrolled in a jta transaction.  
> Then we go to 
> > > get an id from the sequence, the jta transaction is 
> suspended, and a 
> > > new tx is started, in which the ddl is not visible since 
> the jta tx 
> > > wasn't committed. (apparently ddl in derby is transactional)
> > >
> > > Does this seem like a reasonable explanation?
> > >
> > > I'm going to look for a way to run the ddl inside a separate 
> > > transaction that can be committed, the same as how sequences work 
> > > without a non-jta-datasource.  One way to do this would be to 
> > > package the work up in a Runnable and execute it in an 
> appropriate 
> > > transactional environment.  It might be easier to 
> understand if the 
> > > sequence code had a similar implementation.
> > >
> > > thanks
> > > david jencks
> > >
> > >
> >
> > Notice:  This email message, together with any attachments, may 
> > contain information  of  BEA Systems,  Inc.,  its 
> subsidiaries  and  
> > affiliated entities,  that may be confidential,  proprietary,  
> > copyrighted  and/or legally privileged, and is intended 
> solely for the 
> > use of the individual or entity named in this message. If 
> you are not 
> > the intended recipient, and have received this message in error, 
> > please immediately return this by email and then delete it.
> >
> 

Notice:  This email message, together with any attachments, may contain information  of  BEA
Systems,  Inc.,  its subsidiaries  and  affiliated entities,  that may be confidential,  proprietary,
 copyrighted  and/or legally privileged, and is intended solely for the use of the individual
or entity named in this message. If you are not the intended recipient, and have received
this message in error, please immediately return this by email and then delete it.

Mime
View raw message