Re: Confusing conflicts between OpenJPA and Postgresql
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 testfor...@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
Confusing conflicts between OpenJPA and Postgresql
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