Why do I see "Could not commit with auto-commit set on" in the log?
A customer encountered the following problem. I am posting it here in case others encounter it. I will post a separate answer with detail on the cause of the problem.
ItemCleanupTask becomes unscheduled. This can result in a large backlog of items in the database that are no longer "live" in CLM.
In the ccm.log file, there is this exception.
015-04-14 10:07:23,289 [ccm: AsynchronousTaskRunner-12 @@ 10:07] ERROR com.ibm.team.repository - CRJAZ0852I An exception occurred while executing the task "ItemCleanupTask", contributed by component "com.ibm.team.repository". The task will be removed from the schedule.
com.ibm.team.repository.common.TeamRepositoryException: Could not commit with auto-commit set on
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase$Transaction.finishTransaction(RepositoryDatabase.java:622)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase$2.run(RepositoryDatabase.java:352)
at com.ibm.team.repository.service.internal.rdb.ConnectionPoolService.withCurrentConnection(ConnectionPoolService.java:470)
at sun.reflect.GeneratedMethodAccessor194.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:361)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:347)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:56)
at com.sun.proxy.$Proxy7817.withCurrentConnection(Unknown Source)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runTransaction(RepositoryDatabase.java:348)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runInTransaction(RepositoryDatabase.java:288)
at com.ibm.team.repository.service.internal.PrimitiveTransactionService.runInTransaction(PrimitiveTransactionService.java:96)
at sun.reflect.GeneratedMethodAccessor61.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:361)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:347)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:56)
at com.sun.proxy.$Proxy7850.runInTransaction(Unknown Source)
at com.ibm.team.repository.service.internal.dataaccess.delete.ItemCleanupService.completePartialItemDeletions(ItemCleanupService.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:361)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:347)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:56)
at com.sun.proxy.$Proxy7869.completePartialItemDeletions(Unknown Source)
at com.ibm.team.repository.service.internal.ItemCleanupTask.runTask(ItemCleanupTask.java:22)
at com.ibm.team.repository.service.async.AbstractAutoScheduledTask.executeTask(AbstractAutoScheduledTask.java:96)
at sun.reflect.GeneratedMethodAccessor136.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:361)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:347)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:56)
at com.sun.proxy.$Proxy7916.executeTask(Unknown Source)
at com.ibm.team.repository.service.internal.scheduler.AsynchronousTaskRunner.runTask(AsynchronousTaskRunner.java:185)
at com.ibm.team.repository.service.internal.scheduler.AsynchronousTaskRunner.run(AsynchronousTaskRunner.java:138)
at java.lang.Thread.run(Thread.java:790)
Caused by: java.sql.SQLException: Could not commit with auto-commit set on
at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:2356)
at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:2403)
at com.ibm.team.repository.service.internal.db.jdbcwrappers.stat.ConnectionStatWrapper.commit(ConnectionStatWrapper.java:155)
at com.ibm.team.repository.service.internal.db.jdbcwrappers.errlog.ConnectionErrLogWrapper.commit(ConnectionErrLogWrapper.java:88)
at com.ibm.team.repository.service.internal.db.jdbcwrappers.leak.ConnectionLeakWrapper.commit(ConnectionLeakWrapper.java:134)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase$WriteExclusiveTransaction.completeTransaction(RepositoryDatabase.java:787)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase$Transaction.finishTransaction(RepositoryDatabase.java:603)
... 40 more
ItemCleanupTask becomes unscheduled. This can result in a large backlog of items in the database that are no longer "live" in CLM.
In the ccm.log file, there is this exception.
015-04-14 10:07:23,289 [ccm: AsynchronousTaskRunner-12 @@ 10:07] ERROR com.ibm.team.repository - CRJAZ0852I An exception occurred while executing the task "ItemCleanupTask", contributed by component "com.ibm.team.repository". The task will be removed from the schedule.
com.ibm.team.repository.common.TeamRepositoryException: Could not commit with auto-commit set on
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase$Transaction.finishTransaction(RepositoryDatabase.java:622)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase$2.run(RepositoryDatabase.java:352)
at com.ibm.team.repository.service.internal.rdb.ConnectionPoolService.withCurrentConnection(ConnectionPoolService.java:470)
at sun.reflect.GeneratedMethodAccessor194.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:361)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:347)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:56)
at com.sun.proxy.$Proxy7817.withCurrentConnection(Unknown Source)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runTransaction(RepositoryDatabase.java:348)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runInTransaction(RepositoryDatabase.java:288)
at com.ibm.team.repository.service.internal.PrimitiveTransactionService.runInTransaction(PrimitiveTransactionService.java:96)
at sun.reflect.GeneratedMethodAccessor61.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:361)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:347)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:56)
at com.sun.proxy.$Proxy7850.runInTransaction(Unknown Source)
at com.ibm.team.repository.service.internal.dataaccess.delete.ItemCleanupService.completePartialItemDeletions(ItemCleanupService.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:361)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:347)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:56)
at com.sun.proxy.$Proxy7869.completePartialItemDeletions(Unknown Source)
at com.ibm.team.repository.service.internal.ItemCleanupTask.runTask(ItemCleanupTask.java:22)
at com.ibm.team.repository.service.async.AbstractAutoScheduledTask.executeTask(AbstractAutoScheduledTask.java:96)
at sun.reflect.GeneratedMethodAccessor136.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:361)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:347)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:56)
at com.sun.proxy.$Proxy7916.executeTask(Unknown Source)
at com.ibm.team.repository.service.internal.scheduler.AsynchronousTaskRunner.runTask(AsynchronousTaskRunner.java:185)
at com.ibm.team.repository.service.internal.scheduler.AsynchronousTaskRunner.run(AsynchronousTaskRunner.java:138)
at java.lang.Thread.run(Thread.java:790)
Caused by: java.sql.SQLException: Could not commit with auto-commit set on
at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:2356)
at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:2403)
at com.ibm.team.repository.service.internal.db.jdbcwrappers.stat.ConnectionStatWrapper.commit(ConnectionStatWrapper.java:155)
at com.ibm.team.repository.service.internal.db.jdbcwrappers.errlog.ConnectionErrLogWrapper.commit(ConnectionErrLogWrapper.java:88)
at com.ibm.team.repository.service.internal.db.jdbcwrappers.leak.ConnectionLeakWrapper.commit(ConnectionLeakWrapper.java:134)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase$WriteExclusiveTransaction.completeTransaction(RepositoryDatabase.java:787)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase$Transaction.finishTransaction(RepositoryDatabase.java:603)
... 40 more
Accepted answer
This exception occurs when the ojdbc6.jar version 12 or above is used with CLM. Version 12 and above of the driver more strictly enforces JDBC behavior than previous versions.
The workaround is to revert the driver behavior back to what it was in previous versions. This can be achieved by adding the following JVM parameter to the application server where CLM is running: -Doracle.jdbc.autoCommitSpecCompliant=false
This issue is tracked by APAR PI40258 and jazz.net defect
https://jazz.net/jazz/web/projects/Jazz%20Foundation#action=com.ibm.team.workitem.viewWorkItem&id=354397 . It will be fixed in 6.0
Ruby
Martha (Ruby) Andrews
Jazz Foundation L3 Development Team Lead
The workaround is to revert the driver behavior back to what it was in previous versions. This can be achieved by adding the following JVM parameter to the application server where CLM is running: -Doracle.jdbc.autoCommitSpecCompliant=false
This issue is tracked by APAR PI40258 and jazz.net defect
https://jazz.net/jazz/web/projects/Jazz%20Foundation#action=com.ibm.team.workitem.viewWorkItem&id=354397 . It will be fixed in 6.0
Ruby
Martha (Ruby) Andrews
Jazz Foundation L3 Development Team Lead