Why do I see "Could not commit with auto-commit set on" in the log?
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
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
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.