openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rick Curtis <curti...@gmail.com>
Subject Re: Confusing conflicts between OpenJPA and Postgresql
Date Wed, 26 Mar 2014 19:23:40 GMT
Do you have the property openjpa.jdbc.TransactionIsolation specified in
your persistence.xml? It *looks* like we'll only try to set the
transactionIsolation level if that property is not left to the default.

Thanks,
Rick


On Mon, Mar 24, 2014 at 10:56 AM, Vito <testforvln@163.com> wrote:

>
> Hi all,
> I'm recently doing some research with Apache ODE engine. I use Postgresql
> as its external database, openjpa as its ORM solution and bitronix as its
> transaction manager. The ODE workflow engine starts without any problem.
> But when I deploy process definition files into the engine, the exception
> came out. I paste the error content at the end of this email.
> I looked through the source code of
> org.apache.openjpa.lib.jdbc.DecoratingDataSource, and found that openjpa is
> almost definitely to meant to invoke the function of reseting transaction
> isolation level, which would be catched by Postgresql and return with an
> exception.
> Does that mean openjpa works poorly with Postgresql? Or who can tell me
> how to solve this problem.
> The error content is below:
> 17:32:05,155 ERROR [ProcessStoreImpl] Error persisting deployment record
> for {http://sample.bpel.org/bpel/sample}longFlow-1; process will not be
> available after restart!
> <openjpa-1.2.1-r752877:753278 nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: Cannot change
> transaction isolation level in the middle of a transaction
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4232)
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4197)
>     at
> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:102)
>     at
> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:88)
>     at
> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:64)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connect(JDBCStoreManager.java:930)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.getConnection(JDBCStoreManager.java:230)
>     at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:371)
>     at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:339)
>     at
> org.apache.openjpa.jdbc.sql.LogicalUnion$UnionSelect.execute(LogicalUnion.java:420)
>     at
> org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:230)
>     at
> org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:220)
>     at
> org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:206)
>     at
> org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.open(SelectResultObjectProvider.java:94)
>     at
> org.apache.openjpa.lib.rop.WindowResultList.<init>(WindowResultList.java:57)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCFetchConfigurationImpl.newResultList(JDBCFetchConfigurationImpl.java:235)
>     at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1228)
>     at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:990)
>     at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:805)
>     at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:775)
>     at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:771)
>     at
> org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:517)
>     at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:255)
>     at
> org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:294)
>     at
> org.apache.ode.store.jpa.ConfStoreConnectionJpa.setVersion(ConfStoreConnectionJpa.java:76)
>     at
> org.apache.ode.store.ProcessStoreImpl$2.call(ProcessStoreImpl.java:294)
>     at
> org.apache.ode.store.ProcessStoreImpl$2.call(ProcessStoreImpl.java:264)
>     at
> org.apache.ode.store.ProcessStoreImpl$Callable.call(ProcessStoreImpl.java:793)
>     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>     at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>     at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>     at java.lang.Thread.run(Thread.java:662)
> Caused by: org.postgresql.util.PSQLException: Cannot change transaction
> isolation level in the middle of a transaction
>     at
> org.postgresql.jdbc2.AbstractJdbc2Connection.setTransactionIsolation(AbstractJdbc2Connection.java:944)
>     at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     at java.lang.reflect.Method.invoke(Method.java:597)
>     at
> bitronix.tm.resource.jdbc.BaseProxyHandlerClass.invoke(BaseProxyHandlerClass.java:64)
>     at $Proxy5.setTransactionIsolation(Unknown Source)
>     at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     at java.lang.reflect.Method.invoke(Method.java:597)
>     at
> bitronix.tm.resource.jdbc.BaseProxyHandlerClass.invoke(BaseProxyHandlerClass.java:64)
>     at $Proxy7.setTransactionIsolation(Unknown Source)
>     at
> org.apache.openjpa.lib.jdbc.DelegatingConnection.setTransactionIsolation(DelegatingConnection.java:257)
>     at
> org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator.decorate(ConfiguringConnectionDecorator.java:95)
>     at
> org.apache.openjpa.lib.jdbc.DecoratingDataSource.decorate(DecoratingDataSource.java:100)
>     at
> org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:88)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connectInternal(JDBCStoreManager.java:941)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connect(JDBCStoreManager.java:926)
>     ... 27 more
> 17:32:05,163 ERROR [ProcessStoreImpl] DbError
> java.lang.RuntimeException: java.lang.IllegalStateException: no
> transaction started on this thread
>     at
> org.apache.ode.store.jpa.DbConfStoreConnectionFactory.rollbackTransaction(DbConfStoreConnectionFactory.java:96)
>     at
> org.apache.ode.store.ProcessStoreImpl$Callable.call(ProcessStoreImpl.java:800)
>     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>     at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>     at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>     at java.lang.Thread.run(Thread.java:662)
> Caused by: java.lang.IllegalStateException: no transaction started on this
> thread
>     at
> bitronix.tm.BitronixTransactionManager.rollback(BitronixTransactionManager.java:150)
>     at
> org.apache.ode.store.jpa.DbConfStoreConnectionFactory.rollbackTransaction(DbConfStoreConnectionFactory.java:94)
>     ... 6 more
> 17:32:05,163 ERROR [DeploymentPoller] Deployment of LongFlow failed,
> aborting for now.
> org.apache.ode.bpel.iapi.ContextException: DbError
>     at
> org.apache.ode.store.ProcessStoreImpl.exec(ProcessStoreImpl.java:618)
>     at
> org.apache.ode.store.ProcessStoreImpl.deploy(ProcessStoreImpl.java:264)
>     at
> org.apache.ode.store.ProcessStoreImpl.deploy(ProcessStoreImpl.java:172)
>     at
> org.apache.ode.axis2.deploy.DeploymentPoller.check(DeploymentPoller.java:160)
>     at
> org.apache.ode.axis2.deploy.DeploymentPoller.access$300(DeploymentPoller.java:60)
>     at
> org.apache.ode.axis2.deploy.DeploymentPoller$PollingThread.run(DeploymentPoller.java:251)
> Caused by: java.util.concurrent.ExecutionException:
> java.lang.RuntimeException: bitronix.tm.internal.BitronixRollbackException:
> RuntimeException thrown during beforeCompletion cycle caused transaction
> rollback
>     at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>     at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>     at
> org.apache.ode.store.ProcessStoreImpl.exec(ProcessStoreImpl.java:616)
>     ... 5 more
> Caused by: java.lang.RuntimeException:
> bitronix.tm.internal.BitronixRollbackException: RuntimeException thrown
> during beforeCompletion cycle caused transaction rollback
>     at
> org.apache.ode.store.jpa.DbConfStoreConnectionFactory.commitTransaction(DbConfStoreConnectionFactory.java:87)
>     at
> org.apache.ode.store.ProcessStoreImpl$Callable.call(ProcessStoreImpl.java:794)
>     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>     at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>     at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>     at java.lang.Thread.run(Thread.java:662)
> Caused by: bitronix.tm.internal.BitronixRollbackException:
> RuntimeException thrown during beforeCompletion cycle caused transaction
> rollback
>     at bitronix.tm.BitronixTransaction.commit(BitronixTransaction.java:241)
>     at
> bitronix.tm.BitronixTransactionManager.commit(BitronixTransactionManager.java:143)
>     at
> org.apache.ode.store.jpa.DbConfStoreConnectionFactory.commitTransaction(DbConfStoreConnectionFactory.java:85)
>     ... 6 more
> Caused by: <openjpa-1.2.1-r752877:753278 nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: Cannot change
> transaction isolation level in the middle of a transaction
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4232)
>     at
> org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4197)
>     at
> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:102)
>     at
> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:88)
>     at
> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:64)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connect(JDBCStoreManager.java:930)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.retainConnection(JDBCStoreManager.java:216)
>     at
> org.apache.openjpa.kernel.DelegatingStoreManager.retainConnection(DelegatingStoreManager.java:163)
>     at
> org.apache.openjpa.kernel.BrokerImpl.retainConnection(BrokerImpl.java:3710)
>     at
> org.apache.openjpa.kernel.BrokerImpl.beginStoreManagerTransaction(BrokerImpl.java:1283)
>     at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1968)
>     at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1908)
>     at
> org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1826)
>     at
> bitronix.tm.BitronixTransaction.fireBeforeCompletionEvent(BitronixTransaction.java:532)
>     at bitronix.tm.BitronixTransaction.commit(BitronixTransaction.java:235)
>     ... 8 more
> Caused by: org.postgresql.util.PSQLException: Cannot change transaction
> isolation level in the middle of a transaction
>     at
> org.postgresql.jdbc2.AbstractJdbc2Connection.setTransactionIsolation(AbstractJdbc2Connection.java:944)
>     at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     at java.lang.reflect.Method.invoke(Method.java:597)
>     at
> bitronix.tm.resource.jdbc.BaseProxyHandlerClass.invoke(BaseProxyHandlerClass.java:64)
>     at $Proxy5.setTransactionIsolation(Unknown Source)
>     at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     at java.lang.reflect.Method.invoke(Method.java:597)
>     at
> bitronix.tm.resource.jdbc.BaseProxyHandlerClass.invoke(BaseProxyHandlerClass.java:64)
>     at $Proxy7.setTransactionIsolation(Unknown Source)
>     at
> org.apache.openjpa.lib.jdbc.DelegatingConnection.setTransactionIsolation(DelegatingConnection.java:257)
>     at
> org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator.decorate(ConfiguringConnectionDecorator.java:95)
>     at
> org.apache.openjpa.lib.jdbc.DecoratingDataSource.decorate(DecoratingDataSource.java:100)
>     at
> org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:88)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connectInternal(JDBCStoreManager.java:941)
>     at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.connect(JDBCStoreManager.java:926)
>     ... 17 more
>
> Regards,
> Vito
>
>
>


-- 
*Rick Curtis*

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message