You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Adrian Tarau <ad...@daxtechnologies.com> on 2006/05/26 16:54:08 UTC

You cannot commit with autocommit set! problem with incubator-activemq-4.0

I got this exception when ActiveMQ is initialized with an Oracle datasource.

Caused by: java.io.IOException: You cannot commit with autocommit set!
    at 
org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:42)
    at 
org.apache.activemq.store.jdbc.TransactionContext.close(TransactionContext.java:125)
    at 
org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.createAdapter(JDBCPersistenceAdapter.java:253)
    at 
org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.getAdapter(JDBCPersistenceAdapter.java:213)
    at 
org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.start(JDBCPersistenceAdapter.java:139)
    at 
org.apache.activemq.broker.BrokerService.createRegionBroker(BrokerService.java:930)
    at 
org.apache.activemq.broker.BrokerService.createBroker(BrokerService.java:888)
    at 
org.apache.activemq.broker.BrokerService.getBroker(BrokerService.java:458)
    at 
org.apache.activemq.broker.BrokerService.addConnector(BrokerService.java:143)
    at 
org.apache.activemq.broker.BrokerService.addConnector(BrokerService.java:133)
    ... 62 more
Caused by: java.sql.SQLException: You cannot commit with autocommit set!
    at 
org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.jdbcCommit(BaseWrapperManagedConnection.java:434)
    at 
org.jboss.resource.adapter.jdbc.WrappedConnection.commit(WrappedConnection.java:331)
    at 
org.apache.activemq.store.jdbc.TransactionContext.close(TransactionContext.java:119)
    ... 71 more

Following the exception path I realized that the problem comes from the 
commit in TransactionContext.close().
As the comment explain nicely there shouldn't be any commit there.
Any suggestions?



public void close() throws IOException {
        if( !inTx ) {
            try {
                executeBatch();
               
                /**
                 * we are not in a transaction so should not be 
committing ??
                 * This was previously commented out - but had
                 * adverse affects on testing - so it's back!
                 *
                 */
                try{
                    executeBatch();
                } finally {
                    if (connection != null) {
                        connection.commit();
                    }
                }
               
            } catch (SQLException e) {
                JDBCPersistenceAdapter.log("Error while closing 
connection: ", e);
                throw IOExceptionSupport.create(e);
            } finally {
                try {
                    if (connection != null) {
                        connection.close();
                    }
                } catch (Throwable e) {
                    log.warn("Close failed: "+e.getMessage(), e);
                } finally {
                    connection=null;
                }
            }
        }
    }

Re: You cannot commit with autocommit set! problem with incubator-activemq-4.0

Posted by Jamie McCrindle <ja...@gmail.com>.
I'm getting the same things with a jtds datasource pointing at SQL
Server, as in:

http://issues.apache.org/activemq/browse/AMQ-711

anyone?

On 5/31/06, Adrian Tarau <ad...@daxtechnologies.com> wrote:
> Anybody?
>
> Adrian Tarau wrote:
> > I got this exception when ActiveMQ is initialized with an Oracle
> > datasource.
> >
> > Caused by: java.io.IOException: You cannot commit with autocommit set!
> >    at
> > org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:42)
> >
> >    at
> > org.apache.activemq.store.jdbc.TransactionContext.close(TransactionContext.java:125)
> >
> >    at
> > org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.createAdapter(JDBCPersistenceAdapter.java:253)
> >
> >    at
> > org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.getAdapter(JDBCPersistenceAdapter.java:213)
> >
> >    at
> > org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.start(JDBCPersistenceAdapter.java:139)
> >
> >    at
> > org.apache.activemq.broker.BrokerService.createRegionBroker(BrokerService.java:930)
> >
> >    at
> > org.apache.activemq.broker.BrokerService.createBroker(BrokerService.java:888)
> >
> >    at
> > org.apache.activemq.broker.BrokerService.getBroker(BrokerService.java:458)
> >
> >    at
> > org.apache.activemq.broker.BrokerService.addConnector(BrokerService.java:143)
> >
> >    at
> > org.apache.activemq.broker.BrokerService.addConnector(BrokerService.java:133)
> >
> >    ... 62 more
> > Caused by: java.sql.SQLException: You cannot commit with autocommit set!
> >    at
> > org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.jdbcCommit(BaseWrapperManagedConnection.java:434)
> >
> >    at
> > org.jboss.resource.adapter.jdbc.WrappedConnection.commit(WrappedConnection.java:331)
> >
> >    at
> > org.apache.activemq.store.jdbc.TransactionContext.close(TransactionContext.java:119)
> >
> >    ... 71 more
> >
> > Following the exception path I realized that the problem comes from
> > the commit in TransactionContext.close().
> > As the comment explain nicely there shouldn't be any commit there.
> > Any suggestions?
> >
> >
> >
> > public void close() throws IOException {
> >        if( !inTx ) {
> >            try {
> >                executeBatch();
> >                              /**
> >                 * we are not in a transaction so should not be
> > committing ??
> >                 * This was previously commented out - but had
> >                 * adverse affects on testing - so it's back!
> >                 *
> >                 */
> >                try{
> >                    executeBatch();
> >                } finally {
> >                    if (connection != null) {
> >                        connection.commit();
> >                    }
> >                }
> >                          } catch (SQLException e) {
> >                JDBCPersistenceAdapter.log("Error while closing
> > connection: ", e);
> >                throw IOExceptionSupport.create(e);
> >            } finally {
> >                try {
> >                    if (connection != null) {
> >                        connection.close();
> >                    }
> >                } catch (Throwable e) {
> >                    log.warn("Close failed: "+e.getMessage(), e);
> >                } finally {
> >                    connection=null;
> >                }
> >            }
> >        }
> >    }
> >
>
>

Re: You cannot commit with autocommit set! problem with incubator-activemq-4.0

Posted by Adrian Tarau <ad...@daxtechnologies.com>.
Anybody?

Adrian Tarau wrote:
> I got this exception when ActiveMQ is initialized with an Oracle 
> datasource.
>
> Caused by: java.io.IOException: You cannot commit with autocommit set!
>    at 
> org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:42) 
>
>    at 
> org.apache.activemq.store.jdbc.TransactionContext.close(TransactionContext.java:125) 
>
>    at 
> org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.createAdapter(JDBCPersistenceAdapter.java:253) 
>
>    at 
> org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.getAdapter(JDBCPersistenceAdapter.java:213) 
>
>    at 
> org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.start(JDBCPersistenceAdapter.java:139) 
>
>    at 
> org.apache.activemq.broker.BrokerService.createRegionBroker(BrokerService.java:930) 
>
>    at 
> org.apache.activemq.broker.BrokerService.createBroker(BrokerService.java:888) 
>
>    at 
> org.apache.activemq.broker.BrokerService.getBroker(BrokerService.java:458) 
>
>    at 
> org.apache.activemq.broker.BrokerService.addConnector(BrokerService.java:143) 
>
>    at 
> org.apache.activemq.broker.BrokerService.addConnector(BrokerService.java:133) 
>
>    ... 62 more
> Caused by: java.sql.SQLException: You cannot commit with autocommit set!
>    at 
> org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.jdbcCommit(BaseWrapperManagedConnection.java:434) 
>
>    at 
> org.jboss.resource.adapter.jdbc.WrappedConnection.commit(WrappedConnection.java:331) 
>
>    at 
> org.apache.activemq.store.jdbc.TransactionContext.close(TransactionContext.java:119) 
>
>    ... 71 more
>
> Following the exception path I realized that the problem comes from 
> the commit in TransactionContext.close().
> As the comment explain nicely there shouldn't be any commit there.
> Any suggestions?
>
>
>
> public void close() throws IOException {
>        if( !inTx ) {
>            try {
>                executeBatch();
>                              /**
>                 * we are not in a transaction so should not be 
> committing ??
>                 * This was previously commented out - but had
>                 * adverse affects on testing - so it's back!
>                 *
>                 */
>                try{
>                    executeBatch();
>                } finally {
>                    if (connection != null) {
>                        connection.commit();
>                    }
>                }
>                          } catch (SQLException e) {
>                JDBCPersistenceAdapter.log("Error while closing 
> connection: ", e);
>                throw IOExceptionSupport.create(e);
>            } finally {
>                try {
>                    if (connection != null) {
>                        connection.close();
>                    }
>                } catch (Throwable e) {
>                    log.warn("Close failed: "+e.getMessage(), e);
>                } finally {
>                    connection=null;
>                }
>            }
>        }
>    }
>