You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@openjpa.apache.org by Haim Schneider <HA...@il.ibm.com> on 2014/03/13 13:59:54 UTC

MySQLNonTransientConnectionException: Can't call rollback when autocommit=true

Automatic table generation fails with MySQL. I get the exception:

MySQLNonTransientConnectionException: Can't call rollback when 
autocommit=true

This exception causes the connection to be closed, and the automatic table 
generation fails.

The exception is thrown by the SchemaTool.executeSQL method. I checked the 
source code and found that the method calls rollback prior to executing 
the SQL statement. The problem is that the method also set autocommit to 
true before calling rollback, and this leads to the 
MySQLNonTransientConnectionException that causes the connection to be 
closed.

Is there any workaround?

The complete exception is: 

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: 
Can't call rollback when autocommit=true
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.Util.getInstance(Util.java:386)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
        at 
com.mysql.jdbc.ConnectionImpl.rollback(ConnectionImpl.java:5065)
        at 
com.mysql.jdbc.jdbc2.optional.ConnectionWrapper.rollback(ConnectionWrapper.java:794)
        at 
com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.rollback(WSJdbcConnection.java:2593)
        at 
org.apache.openjpa.lib.jdbc.DelegatingConnection.rollback(DelegatingConnection.java:179)
        at 
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.rollback(LoggingConnectionDecorator.java:356)
        at 
org.apache.openjpa.lib.jdbc.DelegatingConnection.rollback(DelegatingConnection.java:179)
        at 
org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.rollback(ConfiguringConnectionDecorator.java:132)
        at 
org.apache.openjpa.jdbc.schema.SchemaTool.executeSQL(SchemaTool.java:1219)
        at 
org.apache.openjpa.jdbc.schema.SchemaTool.createTable(SchemaTool.java:975)
        at 
org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:551)
        at 
org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:366)
        at 
org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:343)
        at 
org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:505)
        at 
org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:455)
        at 
org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:160)
        at 
org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:164)
        at 
org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:122)
        at 
org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:209)
        at 
org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
        at 
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
        at 
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
        at 
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
        at 
org.springframework.orm.jpa.JpaTransactionManager.createEntityManagerForTransaction(JpaTransactionManager.java:445)
        at 
org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:366)
        at 
org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
        at 
org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:336)
        at 
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at 
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622)
        at 
com.ibm.mbaas.mam.dao.MAMClientDAO$$EnhancerByCGLIB$$e32fb58f.getAllMetadata(<generated>)
        at 
com.ibm.mbaas.mam.controllers.ClientMetadataController.getClients(ClientMetadataController.java:173)
        at 
com.ibm.mbaas.mam.controllers.ClientMetadataController.getAllClientsMetadata(ClientMetadataController.java:105)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at 
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
        at 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
        at 
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
        at 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
        at 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
        at 
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
        at 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
        at 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
        at 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
        at 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:575)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
        at 
com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1240)
        at 
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:760)
        at 
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:443)
        at 
com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:127)
        at 
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:88)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
        at 
org.cloudfoundry.identity.uaa.security.web.SecurityFilterChainPostProcessor$UaaLoggingFilter.doFilter(SecurityFilterChainPostProcessor.java:195)
        at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
        at 
org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
        at 
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
        at 
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
        at 
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
        at 
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194)
        at 
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:85)
        at 
com.ibm.ws.icap.security.uaa.filter.OverrideServerPortFilter.doFilter(OverrideServerPortFilter.java:48)
        at 
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194)
        at 
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:85)
        at 
com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:949)
        at 
com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1029)
        at 
com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4499)
        at 
com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.handleRequest(DynamicVirtualHost.java:282)
        at 
com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:954)
        at 
com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:252)
        at 
com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:584)
        at 
com.ibm.ws.threading.internal.Worker.executeWork(Worker.java:439)
        at com.ibm.ws.threading.internal.Worker.run(Worker.java:421)
        at java.lang.Thread.run(Thread.java:724)

Thanks,
Haim Schneider

Re: MySQLNonTransientConnectionException: Can't call rollback when autocommit=true

Posted by Haim Schneider <HA...@il.ibm.com>.
I'm using Spring + OpenJPA + WebSphere Liberty 8.5. The same code works OK 
with a DB2 datasource, but fails with MySQL. 

The persistemce.xml is the following:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
        xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
        <persistence-unit name="MAMServicePU" 
transaction-type="RESOURCE_LOCAL">
 
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
                <jta-data-source>jdbc/mydb_mysql</jta-data-source>
                <class>com.ibm.Test1</class>
                <class>com.ibm.Test2</class>

                <properties>
                        <property name="openjpa.jdbc.DBDictionary" 
value="mysql" />
                        <property name="openjpa.jdbc.Schema" value="test" 
/>
                        <property name="openjpa.jdbc.SynchronizeMappings" 
value="buildSchema(ForeignKeys=true,Indexes=false)" />
                        <property name="openjpa.Log" 
value="DefaultLevel=TRACE, SQL=TRACE"/>
                </properties>
        </persistence-unit>
</persistence>

 The openJPA trace does not show anything unusual.

The interesting part is that I checked the SchemaTool.java source code and 
found that it always calls roolback() before executing DDL. The comment in 
the SchemaTool code is the following:

                        // some connections require that rollback be
                        // called on the connection before any DDL 
statements
                        // can be run on it, even when autocommit is on.
                        // This is sometimes because the connection does 
not
                        // allow DDL statements when there are multiple
                        // commands issued on the connection, and the
                        // connection pool may have issued some validation 
SQL.

So from what I see in the code, rollback is always called before executing 
the DDL statements, and autocommit is explicitly set to true, which leads 
to the MySQL exception. 

Thanks,
Haim 





From:   Kevin Sutter <kw...@gmail.com>
To:     users@openjpa.apache.org, 
Date:   13/03/2014 05:00 PM
Subject:        Re: MySQLNonTransientConnectionException: Can't call 
rollback when autocommit=true



You seem to have several frameworks involved here...  Spring and JPA
(OpenJPA).  You also seem to be using WebSphere?  Is this the Liberty
profile or the full platform WebSphere?  What version?

Can you post your persistence.xml file?

Do you have any other errors or warnings in your logs prior to this
exception?  As Albert was asking, I'm wondering if there is just some
disconnect between your MySQL database and the JPA access...

Thanks, Kevin


On Thu, Mar 13, 2014 at 9:23 AM, Albert Lee <al...@gmail.com> wrote:

> Wondering what is the cause of the rollback from the SchemaTool, i.e.
>
> org.apache.openjpa.lib.jdbc.
>
> 
ConfiguringConnectionDecorator$ConfiguringConnection.rollback(ConfiguringConnectionDecorator.java:132)
>         at
> 
org.apache.openjpa.jdbc.schema.SchemaTool.executeSQL(SchemaTool.java:1219)
>
> and what data source type was used?
>
>
>
> On Thu, Mar 13, 2014 at 7:59 AM, Haim Schneider <HA...@il.ibm.com> 
wrote:
>
> > Automatic table generation fails with MySQL. I get the exception:
> >
> > MySQLNonTransientConnectionException: Can't call rollback when
> > autocommit=true
> >
> > This exception causes the connection to be closed, and the automatic
> table
> > generation fails.
> >
> > The exception is thrown by the SchemaTool.executeSQL method. I checked
> the
> > source code and found that the method calls rollback prior to 
executing
> > the SQL statement. The problem is that the method also set autocommit 
to
> > true before calling rollback, and this leads to the
> > MySQLNonTransientConnectionException that causes the connection to be
> > closed.
> >
> > Is there any workaround?
> >
> > The complete exception is:
> >
> > com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:
> > Can't call rollback when autocommit=true
> >         at 
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> > Method)
> >         at
> >
> >
> 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
> >         at
> >
> >
> 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> >         at
> java.lang.reflect.Constructor.newInstance(Constructor.java:526)
> >         at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
> >         at com.mysql.jdbc.Util.getInstance(Util.java:386)
> >         at 
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015)
> >         at 
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
> >         at 
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
> >         at 
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
> >         at
> > com.mysql.jdbc.ConnectionImpl.rollback(ConnectionImpl.java:5065)
> >         at
> >
> >
> 
com.mysql.jdbc.jdbc2.optional.ConnectionWrapper.rollback(ConnectionWrapper.java:794)
> >         at
> >
> >
> 
com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.rollback(WSJdbcConnection.java:2593)
> >         at
> >
> >
> 
org.apache.openjpa.lib.jdbc.DelegatingConnection.rollback(DelegatingConnection.java:179)
> >         at
> >
> >
> 
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.rollback(LoggingConnectionDecorator.java:356)
> >         at
> >
> >
> 
org.apache.openjpa.lib.jdbc.DelegatingConnection.rollback(DelegatingConnection.java:179)
> >         at
> >
> >
> 
org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.rollback(ConfiguringConnectionDecorator.java:132)
> >         at
> >
> 
org.apache.openjpa.jdbc.schema.SchemaTool.executeSQL(SchemaTool.java:1219)
> >         at
> >
> 
org.apache.openjpa.jdbc.schema.SchemaTool.createTable(SchemaTool.java:975)
> >         at
> > org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:551)
> >         at
> > org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:366)
> >         at
> > org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:343)
> >         at
> > org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:505)
> >         at
> > org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:455)
> >         at
> >
> >
> 
org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:160)
> >         at
> >
> >
> 
org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:164)
> >         at
> >
> >
> 
org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:122)
> >         at
> >
> >
> 
org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:209)
> >         at
> >
> >
> 
org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
> >         at
> >
> >
> 
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
> >         at
> >
> >
> 
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
> >         at
> >
> >
> 
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
> >         at
> >
> >
> 
org.springframework.orm.jpa.JpaTransactionManager.createEntityManagerForTransaction(JpaTransactionManager.java:445)
> >         at
> >
> >
> 
org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:366)
> >         at
> >
> >
> 
org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
> >         at
> >
> >
> 
org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:336)
> >         at
> >
> >
> 
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
> >         at
> >
> >
> 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
> >         at
> >
> >
> 
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622)
> >         at
> >
> >
> 
com.ibm.mbaas.mam.dao.MAMClientDAO$$EnhancerByCGLIB$$e32fb58f.getAllMetadata(<generated>)
> >         at
> >
> >
> 
com.ibm.mbaas.mam.controllers.ClientMetadataController.getClients(ClientMetadataController.java:173)
> >         at
> >
> >
> 
com.ibm.mbaas.mam.controllers.ClientMetadataController.getAllClientsMetadata(ClientMetadataController.java:105)
> >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >         at
> >
> >
> 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> >         at
> >
> >
> 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >         at java.lang.reflect.Method.invoke(Method.java:606)
> >         at
> >
> >
> 
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
> >         at
> >
> >
> 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
> >         at
> >
> >
> 
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
> >         at
> >
> >
> 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
> >         at
> >
> >
> 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
> >         at
> >
> >
> 
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
> >         at
> >
> >
> 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
> >         at
> >
> >
> 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
> >         at
> >
> >
> 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
> >         at
> >
> >
> 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
> >         at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:575)
> >         at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
> >         at
> >
> >
> 
com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1240)
> >         at
> >
> >
> 
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:760)
> >         at
> >
> >
> 
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:443)
> >         at
> >
> >
> 
com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:127)
> >         at
> >
> >
> 
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:88)
> >         at
> >
> >
> 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
> >         at
> >
> >
> 
org.cloudfoundry.identity.uaa.security.web.SecurityFilterChainPostProcessor$UaaLoggingFilter.doFilter(SecurityFilterChainPostProcessor.java:195)
> >         at
> >
> >
> 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> >         at
> >
> >
> 
org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
> >         at
> >
> >
> 
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
> >         at
> >
> >
> 
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
> >         at
> >
> >
> 
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
> >         at
> >
> >
> 
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194)
> >         at
> >
> >
> 
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:85)
> >         at
> >
> >
> 
com.ibm.ws.icap.security.uaa.filter.OverrideServerPortFilter.doFilter(OverrideServerPortFilter.java:48)
> >         at
> >
> >
> 
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194)
> >         at
> >
> >
> 
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:85)
> >         at
> >
> >
> 
com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:949)
> >         at
> >
> >
> 
com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1029)
> >         at
> > com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4499)
> >         at
> >
> >
> 
com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.handleRequest(DynamicVirtualHost.java:282)
> >         at
> > 
com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:954)
> >         at
> >
> >
> 
com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:252)
> >         at
> >
> >
> 
com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:584)
> >         at
> > com.ibm.ws.threading.internal.Worker.executeWork(Worker.java:439)
> >         at com.ibm.ws.threading.internal.Worker.run(Worker.java:421)
> >         at java.lang.Thread.run(Thread.java:724)
> >
> > Thanks,
> > Haim Schneider
>
>
>
>
> --
> Albert Lee.
>


Re: MySQLNonTransientConnectionException: Can't call rollback when autocommit=true

Posted by Kevin Sutter <kw...@gmail.com>.
You seem to have several frameworks involved here...  Spring and JPA
(OpenJPA).  You also seem to be using WebSphere?  Is this the Liberty
profile or the full platform WebSphere?  What version?

Can you post your persistence.xml file?

Do you have any other errors or warnings in your logs prior to this
exception?  As Albert was asking, I'm wondering if there is just some
disconnect between your MySQL database and the JPA access...

Thanks, Kevin


On Thu, Mar 13, 2014 at 9:23 AM, Albert Lee <al...@gmail.com> wrote:

> Wondering what is the cause of the rollback from the SchemaTool, i.e.
>
> org.apache.openjpa.lib.jdbc.
>
> ConfiguringConnectionDecorator$ConfiguringConnection.rollback(ConfiguringConnectionDecorator.java:132)
>         at
> org.apache.openjpa.jdbc.schema.SchemaTool.executeSQL(SchemaTool.java:1219)
>
> and what data source type was used?
>
>
>
> On Thu, Mar 13, 2014 at 7:59 AM, Haim Schneider <HA...@il.ibm.com> wrote:
>
> > Automatic table generation fails with MySQL. I get the exception:
> >
> > MySQLNonTransientConnectionException: Can't call rollback when
> > autocommit=true
> >
> > This exception causes the connection to be closed, and the automatic
> table
> > generation fails.
> >
> > The exception is thrown by the SchemaTool.executeSQL method. I checked
> the
> > source code and found that the method calls rollback prior to executing
> > the SQL statement. The problem is that the method also set autocommit to
> > true before calling rollback, and this leads to the
> > MySQLNonTransientConnectionException that causes the connection to be
> > closed.
> >
> > Is there any workaround?
> >
> > The complete exception is:
> >
> > com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:
> > Can't call rollback when autocommit=true
> >         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> > Method)
> >         at
> >
> >
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
> >         at
> >
> >
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> >         at
> java.lang.reflect.Constructor.newInstance(Constructor.java:526)
> >         at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
> >         at com.mysql.jdbc.Util.getInstance(Util.java:386)
> >         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015)
> >         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
> >         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
> >         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
> >         at
> > com.mysql.jdbc.ConnectionImpl.rollback(ConnectionImpl.java:5065)
> >         at
> >
> >
> com.mysql.jdbc.jdbc2.optional.ConnectionWrapper.rollback(ConnectionWrapper.java:794)
> >         at
> >
> >
> com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.rollback(WSJdbcConnection.java:2593)
> >         at
> >
> >
> org.apache.openjpa.lib.jdbc.DelegatingConnection.rollback(DelegatingConnection.java:179)
> >         at
> >
> >
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.rollback(LoggingConnectionDecorator.java:356)
> >         at
> >
> >
> org.apache.openjpa.lib.jdbc.DelegatingConnection.rollback(DelegatingConnection.java:179)
> >         at
> >
> >
> org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.rollback(ConfiguringConnectionDecorator.java:132)
> >         at
> >
> org.apache.openjpa.jdbc.schema.SchemaTool.executeSQL(SchemaTool.java:1219)
> >         at
> >
> org.apache.openjpa.jdbc.schema.SchemaTool.createTable(SchemaTool.java:975)
> >         at
> > org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:551)
> >         at
> > org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:366)
> >         at
> > org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:343)
> >         at
> > org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:505)
> >         at
> > org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:455)
> >         at
> >
> >
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:160)
> >         at
> >
> >
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:164)
> >         at
> >
> >
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:122)
> >         at
> >
> >
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:209)
> >         at
> >
> >
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
> >         at
> >
> >
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
> >         at
> >
> >
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
> >         at
> >
> >
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
> >         at
> >
> >
> org.springframework.orm.jpa.JpaTransactionManager.createEntityManagerForTransaction(JpaTransactionManager.java:445)
> >         at
> >
> >
> org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:366)
> >         at
> >
> >
> org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
> >         at
> >
> >
> org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:336)
> >         at
> >
> >
> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
> >         at
> >
> >
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
> >         at
> >
> >
> org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622)
> >         at
> >
> >
> com.ibm.mbaas.mam.dao.MAMClientDAO$$EnhancerByCGLIB$$e32fb58f.getAllMetadata(<generated>)
> >         at
> >
> >
> com.ibm.mbaas.mam.controllers.ClientMetadataController.getClients(ClientMetadataController.java:173)
> >         at
> >
> >
> com.ibm.mbaas.mam.controllers.ClientMetadataController.getAllClientsMetadata(ClientMetadataController.java:105)
> >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >         at
> >
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> >         at
> >
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >         at java.lang.reflect.Method.invoke(Method.java:606)
> >         at
> >
> >
> org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
> >         at
> >
> >
> org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
> >         at
> >
> >
> org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
> >         at
> >
> >
> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
> >         at
> >
> >
> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
> >         at
> >
> >
> org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
> >         at
> >
> >
> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
> >         at
> >
> >
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
> >         at
> >
> >
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
> >         at
> >
> >
> org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
> >         at javax.servlet.http.HttpServlet.service(HttpServlet.java:575)
> >         at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
> >         at
> >
> >
> com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1240)
> >         at
> >
> >
> com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:760)
> >         at
> >
> >
> com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:443)
> >         at
> >
> >
> com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:127)
> >         at
> >
> >
> com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:88)
> >         at
> >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
> >         at
> >
> >
> org.cloudfoundry.identity.uaa.security.web.SecurityFilterChainPostProcessor$UaaLoggingFilter.doFilter(SecurityFilterChainPostProcessor.java:195)
> >         at
> >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> >         at
> >
> >
> org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
> >         at
> >
> >
> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
> >         at
> >
> >
> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
> >         at
> >
> >
> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
> >         at
> >
> >
> com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194)
> >         at
> >
> >
> com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:85)
> >         at
> >
> >
> com.ibm.ws.icap.security.uaa.filter.OverrideServerPortFilter.doFilter(OverrideServerPortFilter.java:48)
> >         at
> >
> >
> com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194)
> >         at
> >
> >
> com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:85)
> >         at
> >
> >
> com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:949)
> >         at
> >
> >
> com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1029)
> >         at
> > com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4499)
> >         at
> >
> >
> com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.handleRequest(DynamicVirtualHost.java:282)
> >         at
> > com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:954)
> >         at
> >
> >
> com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:252)
> >         at
> >
> >
> com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:584)
> >         at
> > com.ibm.ws.threading.internal.Worker.executeWork(Worker.java:439)
> >         at com.ibm.ws.threading.internal.Worker.run(Worker.java:421)
> >         at java.lang.Thread.run(Thread.java:724)
> >
> > Thanks,
> > Haim Schneider
>
>
>
>
> --
> Albert Lee.
>

Re: MySQLNonTransientConnectionException: Can't call rollback when autocommit=true

Posted by Rupert Smith <ru...@googlemail.com>.
Having some slightly related issues with setting up transactional
datasources under OpenJPA myself.

What is your persistence.xml? I'm wondering if you have a non-jta
datasource configured? I believe OpenJPA will use that for creating the
tables, and if it is non-transactional, there should be no rollback. At
least this might let you see the real error.

Rupert


On 13 March 2014 14:23, Albert Lee <al...@gmail.com> wrote:

> Wondering what is the cause of the rollback from the SchemaTool, i.e.
>
> org.apache.openjpa.lib.jdbc.
>
> ConfiguringConnectionDecorator$ConfiguringConnection.rollback(ConfiguringConnectionDecorator.java:132)
>         at
> org.apache.openjpa.jdbc.schema.SchemaTool.executeSQL(SchemaTool.java:1219)
>
> and what data source type was used?
>
>
>
> On Thu, Mar 13, 2014 at 7:59 AM, Haim Schneider <HA...@il.ibm.com> wrote:
>
> > Automatic table generation fails with MySQL. I get the exception:
> >
> > MySQLNonTransientConnectionException: Can't call rollback when
> > autocommit=true
> >
> > This exception causes the connection to be closed, and the automatic
> table
> > generation fails.
> >
> > The exception is thrown by the SchemaTool.executeSQL method. I checked
> the
> > source code and found that the method calls rollback prior to executing
> > the SQL statement. The problem is that the method also set autocommit to
> > true before calling rollback, and this leads to the
> > MySQLNonTransientConnectionException that causes the connection to be
> > closed.
> >
> > Is there any workaround?
> >
> > The complete exception is:
> >
> > com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:
> > Can't call rollback when autocommit=true
> >         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> > Method)
> >         at
> >
> >
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
> >         at
> >
> >
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> >         at
> java.lang.reflect.Constructor.newInstance(Constructor.java:526)
> >         at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
> >         at com.mysql.jdbc.Util.getInstance(Util.java:386)
> >         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015)
> >         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
> >         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
> >         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
> >         at
> > com.mysql.jdbc.ConnectionImpl.rollback(ConnectionImpl.java:5065)
> >         at
> >
> >
> com.mysql.jdbc.jdbc2.optional.ConnectionWrapper.rollback(ConnectionWrapper.java:794)
> >         at
> >
> >
> com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.rollback(WSJdbcConnection.java:2593)
> >         at
> >
> >
> org.apache.openjpa.lib.jdbc.DelegatingConnection.rollback(DelegatingConnection.java:179)
> >         at
> >
> >
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.rollback(LoggingConnectionDecorator.java:356)
> >         at
> >
> >
> org.apache.openjpa.lib.jdbc.DelegatingConnection.rollback(DelegatingConnection.java:179)
> >         at
> >
> >
> org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.rollback(ConfiguringConnectionDecorator.java:132)
> >         at
> >
> org.apache.openjpa.jdbc.schema.SchemaTool.executeSQL(SchemaTool.java:1219)
> >         at
> >
> org.apache.openjpa.jdbc.schema.SchemaTool.createTable(SchemaTool.java:975)
> >         at
> > org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:551)
> >         at
> > org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:366)
> >         at
> > org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:343)
> >         at
> > org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:505)
> >         at
> > org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:455)
> >         at
> >
> >
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:160)
> >         at
> >
> >
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:164)
> >         at
> >
> >
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:122)
> >         at
> >
> >
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:209)
> >         at
> >
> >
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
> >         at
> >
> >
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
> >         at
> >
> >
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
> >         at
> >
> >
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
> >         at
> >
> >
> org.springframework.orm.jpa.JpaTransactionManager.createEntityManagerForTransaction(JpaTransactionManager.java:445)
> >         at
> >
> >
> org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:366)
> >         at
> >
> >
> org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
> >         at
> >
> >
> org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:336)
> >         at
> >
> >
> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
> >         at
> >
> >
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
> >         at
> >
> >
> org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622)
> >         at
> >
> >
> com.ibm.mbaas.mam.dao.MAMClientDAO$$EnhancerByCGLIB$$e32fb58f.getAllMetadata(<generated>)
> >         at
> >
> >
> com.ibm.mbaas.mam.controllers.ClientMetadataController.getClients(ClientMetadataController.java:173)
> >         at
> >
> >
> com.ibm.mbaas.mam.controllers.ClientMetadataController.getAllClientsMetadata(ClientMetadataController.java:105)
> >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >         at
> >
> >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> >         at
> >
> >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >         at java.lang.reflect.Method.invoke(Method.java:606)
> >         at
> >
> >
> org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
> >         at
> >
> >
> org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
> >         at
> >
> >
> org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
> >         at
> >
> >
> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
> >         at
> >
> >
> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
> >         at
> >
> >
> org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
> >         at
> >
> >
> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
> >         at
> >
> >
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
> >         at
> >
> >
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
> >         at
> >
> >
> org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
> >         at javax.servlet.http.HttpServlet.service(HttpServlet.java:575)
> >         at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
> >         at
> >
> >
> com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1240)
> >         at
> >
> >
> com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:760)
> >         at
> >
> >
> com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:443)
> >         at
> >
> >
> com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:127)
> >         at
> >
> >
> com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:88)
> >         at
> >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
> >         at
> >
> >
> org.cloudfoundry.identity.uaa.security.web.SecurityFilterChainPostProcessor$UaaLoggingFilter.doFilter(SecurityFilterChainPostProcessor.java:195)
> >         at
> >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> >         at
> >
> >
> org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
> >         at
> >
> >
> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
> >         at
> >
> >
> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
> >         at
> >
> >
> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
> >         at
> >
> >
> com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194)
> >         at
> >
> >
> com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:85)
> >         at
> >
> >
> com.ibm.ws.icap.security.uaa.filter.OverrideServerPortFilter.doFilter(OverrideServerPortFilter.java:48)
> >         at
> >
> >
> com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194)
> >         at
> >
> >
> com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:85)
> >         at
> >
> >
> com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:949)
> >         at
> >
> >
> com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1029)
> >         at
> > com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4499)
> >         at
> >
> >
> com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.handleRequest(DynamicVirtualHost.java:282)
> >         at
> > com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:954)
> >         at
> >
> >
> com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:252)
> >         at
> >
> >
> com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:584)
> >         at
> > com.ibm.ws.threading.internal.Worker.executeWork(Worker.java:439)
> >         at com.ibm.ws.threading.internal.Worker.run(Worker.java:421)
> >         at java.lang.Thread.run(Thread.java:724)
> >
> > Thanks,
> > Haim Schneider
>
>
>
>
> --
> Albert Lee.
>

Re: MySQLNonTransientConnectionException: Can't call rollback when autocommit=true

Posted by Albert Lee <al...@gmail.com>.
Wondering what is the cause of the rollback from the SchemaTool, i.e.

org.apache.openjpa.lib.jdbc.
ConfiguringConnectionDecorator$ConfiguringConnection.rollback(ConfiguringConnectionDecorator.java:132)
        at
org.apache.openjpa.jdbc.schema.SchemaTool.executeSQL(SchemaTool.java:1219)

and what data source type was used?



On Thu, Mar 13, 2014 at 7:59 AM, Haim Schneider <HA...@il.ibm.com> wrote:

> Automatic table generation fails with MySQL. I get the exception:
>
> MySQLNonTransientConnectionException: Can't call rollback when
> autocommit=true
>
> This exception causes the connection to be closed, and the automatic table
> generation fails.
>
> The exception is thrown by the SchemaTool.executeSQL method. I checked the
> source code and found that the method calls rollback prior to executing
> the SQL statement. The problem is that the method also set autocommit to
> true before calling rollback, and this leads to the
> MySQLNonTransientConnectionException that causes the connection to be
> closed.
>
> Is there any workaround?
>
> The complete exception is:
>
> com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:
> Can't call rollback when autocommit=true
>         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
>         at
>
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
>         at
>
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>         at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
>         at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
>         at com.mysql.jdbc.Util.getInstance(Util.java:386)
>         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015)
>         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
>         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
>         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
>         at
> com.mysql.jdbc.ConnectionImpl.rollback(ConnectionImpl.java:5065)
>         at
>
> com.mysql.jdbc.jdbc2.optional.ConnectionWrapper.rollback(ConnectionWrapper.java:794)
>         at
>
> com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.rollback(WSJdbcConnection.java:2593)
>         at
>
> org.apache.openjpa.lib.jdbc.DelegatingConnection.rollback(DelegatingConnection.java:179)
>         at
>
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection.rollback(LoggingConnectionDecorator.java:356)
>         at
>
> org.apache.openjpa.lib.jdbc.DelegatingConnection.rollback(DelegatingConnection.java:179)
>         at
>
> org.apache.openjpa.lib.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.rollback(ConfiguringConnectionDecorator.java:132)
>         at
> org.apache.openjpa.jdbc.schema.SchemaTool.executeSQL(SchemaTool.java:1219)
>         at
> org.apache.openjpa.jdbc.schema.SchemaTool.createTable(SchemaTool.java:975)
>         at
> org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:551)
>         at
> org.apache.openjpa.jdbc.schema.SchemaTool.add(SchemaTool.java:366)
>         at
> org.apache.openjpa.jdbc.schema.SchemaTool.run(SchemaTool.java:343)
>         at
> org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:505)
>         at
> org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:455)
>         at
>
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:160)
>         at
>
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:164)
>         at
>
> org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:122)
>         at
>
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:209)
>         at
>
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
>         at
>
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:227)
>         at
>
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:154)
>         at
>
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:60)
>         at
>
> org.springframework.orm.jpa.JpaTransactionManager.createEntityManagerForTransaction(JpaTransactionManager.java:445)
>         at
>
> org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:366)
>         at
>
> org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
>         at
>
> org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:336)
>         at
>
> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
>         at
>
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
>         at
>
> org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622)
>         at
>
> com.ibm.mbaas.mam.dao.MAMClientDAO$$EnhancerByCGLIB$$e32fb58f.getAllMetadata(<generated>)
>         at
>
> com.ibm.mbaas.mam.controllers.ClientMetadataController.getClients(ClientMetadataController.java:173)
>         at
>
> com.ibm.mbaas.mam.controllers.ClientMetadataController.getAllClientsMetadata(ClientMetadataController.java:105)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at
>
> org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
>         at
>
> org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
>         at
>
> org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
>         at
>
> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
>         at
>
> org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
>         at
>
> org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
>         at
>
> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
>         at
>
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
>         at
>
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
>         at
>
> org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:575)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
>         at
>
> com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1240)
>         at
>
> com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:760)
>         at
>
> com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:443)
>         at
>
> com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:127)
>         at
>
> com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:88)
>         at
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
>         at
>
> org.cloudfoundry.identity.uaa.security.web.SecurityFilterChainPostProcessor$UaaLoggingFilter.doFilter(SecurityFilterChainPostProcessor.java:195)
>         at
>
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
>         at
>
> org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
>         at
>
> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
>         at
>
> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
>         at
>
> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
>         at
>
> com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194)
>         at
>
> com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:85)
>         at
>
> com.ibm.ws.icap.security.uaa.filter.OverrideServerPortFilter.doFilter(OverrideServerPortFilter.java:48)
>         at
>
> com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194)
>         at
>
> com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:85)
>         at
>
> com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:949)
>         at
>
> com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1029)
>         at
> com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4499)
>         at
>
> com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.handleRequest(DynamicVirtualHost.java:282)
>         at
> com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:954)
>         at
>
> com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:252)
>         at
>
> com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:584)
>         at
> com.ibm.ws.threading.internal.Worker.executeWork(Worker.java:439)
>         at com.ibm.ws.threading.internal.Worker.run(Worker.java:421)
>         at java.lang.Thread.run(Thread.java:724)
>
> Thanks,
> Haim Schneider




-- 
Albert Lee.