It's all about the answers!

Ask a question

Why do I see "Could not commit with auto-commit set on" in the log?


Martha (Ruby) Andrews (3.0k43650) | asked May 01 '15, 12:10 p.m.
JAZZ DEVELOPER
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


permanent link
Martha (Ruby) Andrews (3.0k43650) | answered May 01 '15, 12:15 p.m.
JAZZ DEVELOPER
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"

Therefore, when you add parameters in WebSphere, you leave off the D at the beginning.



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


Register or to post your answer.