Jazz Forum Welcome to the Jazz Community Forum Connect and collaborate with IBM Engineering experts and users

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

0 votes


Accepted answer

Permanent link
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

0 votes

Comments

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.


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.

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 log in to post 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.

Search context
Follow this question

By Email: 

Once you sign in you will be able to subscribe for any updates here.

By RSS:

Answers
Answers and Comments
Question details

Question asked: May 01 '15, 12:10 p.m.

Question was seen: 21,024 times

Last updated: Aug 15 '16, 3:48 p.m.

Confirmation Cancel Confirm