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:01:04 GMT
> 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.

-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.

Mime
View raw message