[ https://issues.apache.org/jira/browse/AMQ-5318?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14091812#comment-14091812 ]
Pat Fox commented on AMQ-5318: ------------------------------ github pull request. https://github.com/apache/activemq/pull/43 > JDBC store; commit called on connection that uses autocommit during > "deleteAllMessages" . > ----------------------------------------------------------------------------------------- > > Key: AMQ-5318 > URL: https://issues.apache.org/jira/browse/AMQ-5318 > Project: ActiveMQ > Issue Type: Bug > Components: Broker > Affects Versions: 5.10.0 > Reporter: Pat Fox > Priority: Minor > > The oracle v12 driver throws the following exception if commit() is called on > a connection that has auto-commit enabled(see [1]) . This seems to be a > change in behaviour since v11. > {code} > caused by: java.sql.SQLException: Could not commit with auto-commit set on > at > oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:4443) > at > oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:4490) > at > org.apache.commons.dbcp.DelegatingConnection.commit(DelegatingConnection.java:334) > at > org.apache.commons.dbcp.DelegatingConnection.commit(DelegatingConnection.java:334) > at > org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.commit(PoolingDataSource.java:211) > at > org.apache.activemq.store.jdbc.adapter.DefaultJDBCAdapter.doDropTables(DefaultJDBCAdapter.java:148) > at > org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.deleteAllMessages(JDBCPersistenceAdapter.java:534) > ... 40 more > {code} > In the > org.apache.activemq.store.jdbc.adapter.DefaultJDBCAdapter#doDropTables() it > explicitly calls connection.commit() without checking if auto-commit is > enabled. In other places auto-commit does seem to be checked before commit > is called - org.apache.activemq.store.jdbc.TransactionContext#commit(). > The v12 driver does allow autocommit-SpecCompliance to be turned off by > setting system property "oracle.jdbc.autoCommitSpecCompliant=false". But it > does seem like > org.apache.activemq.store.jdbc.adapter.DefaultJDBCAdapter#doDropTables() is > not strictly adhering to the spec. > I think it would be better to do a check if auto-commit is on before calling > connection.commit(). > I will attach a github pull request with test and potential fix - for someone > to review. -- This message was sent by Atlassian JIRA (v6.2#6252)