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 |
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 Ralph Schoon selected this answer as the correct answer
Comments
Diane Everitt
commented Aug 02 '16, 9:53 a.m.
When a customer added "-Doracle.jdbc.autoCommitSpecCompliant=false" parameter in WAS custom properties, and then checked the running JVM parameters, he saw, "-DDoracle.jdbc.autoCommitSpecCompliant=false"
Donald Nong
commented Aug 14 '16, 9:12 p.m.
Diane, it doesn't sound right. The parameter is supposed to be added as is in the Generic JVM Arguments text box. If you add it as a name/value pair (similar to those CLM related parameters such JAZZ_HOME), you should use name "oracle.jdbc.autoCommitSpecCompliant" and value "false". "-D" is a JVM option to pass on the parameters.
Diane Everitt
commented Aug 15 '16, 3:48 p.m.
Donald, I agree that it doesn't sound right. But, I sent the instructions to the customer to add it to JVM Arguments, as you have indicated, and he said he saw as indicated in my comment above... unless, he mis-typed. Just wanted to make a note here in case other customers see the same as this one.
|
Your answer
Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.