Hi,
I developed a follow up plugin for the deliver action in RTC whose main method is the following in order to lock resources:
private static void applyLock(IScmService scmService,
IWorkspaceHandle workspaceHandle,
IComponentHandle componentHandle,
IContributorHandle contrHandle,
IVersionable versionable,
IRepositoryProgressMonitor repositoryMonitor) throws TeamRepositoryException {
LockParameter lockParameter = ScmDtoFactory.eINSTANCE.createLockParameter();
WorkspaceLocks workspaceLocks = ScmDtoFactory.eINSTANCE.createWorkspaceLocks();
workspaceLocks.setWorkspace(workspaceHandle);
ComponentLocks componentLocks = ScmDtoFactory.eINSTANCE.createComponentLocks();
componentLocks.setComponent(componentHandle);
ContributorLocks contributorLocks = ScmDtoFactory.eINSTANCE.createContributorLocks();
contributorLocks.setContributor(contrHandle);
contributorLocks.getVersionables().add(versionable);
componentLocks.getContributorLocks().add(contributorLocks);
workspaceLocks.getComponentLocks().add(componentLocks);
lockParameter.getToAcquire().add(workspaceLocks);
scmService.updateLocks(lockParameter, repositoryMonitor);
}//applyLock
but I am getting the following exception:
2015-10-28 17:41:32,612 [http-bio-9443-exec-11 @@ 17:41 <unauthenticated> <Jakarta Commons-HttpClient/3.1@10.51.82.143> /ccm/service/com.ibm.team.scm.common.IScmService] ERROR al.db.metadata.config.ConfigurationMediatorService - CRRTC5002E: Internal Repository Exception encountered
com.ibm.team.repository.common.InternalRepositoryException: Updated unexpected number of rows in Configuration table
at com.ibm.team.scm.service.internal.db.metadata.config.ConfigurationMediatorService.jdbcUpdateConfigurationPrimary(ConfigurationMediatorService.java:1104)
at com.ibm.team.scm.service.internal.ScmDataMediator.updateConfigurationPrimary(ScmDataMediator.java:849)
at com.ibm.team.scm.service.internal.ScmTransactionContext.save(ScmTransactionContext.java:1809)
at com.ibm.team.scm.service.internal.AbstractScmService$4.run(AbstractScmService.java:636)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase$Transaction.run(RepositoryDatabase.java:567)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase$2.run(RepositoryDatabase.java:351)
at com.ibm.team.repository.service.internal.rdb.ConnectionPoolService.withCurrentConnection(ConnectionPoolService.java:470)
at sun.reflect.GeneratedMethodAccessor92.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.$Proxy116.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.GeneratedMethodAccessor116.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.$Proxy159.runInTransaction(Unknown Source)
at com.ibm.team.repository.service.internal.TransactionService.runInTransaction(TransactionService.java:45)
at sun.reflect.GeneratedMethodAccessor263.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.$Proxy281.runInTransaction(Unknown Source)
at com.ibm.team.scm.service.internal.AbstractScmService.runInTransaction(AbstractScmService.java:365)
Does anybody have any idea to solve this?
Regards,
Francisco R.
Comments
With this few data, no code and not even the slightest idea what call is done, what do you think?
You are right, Ralph. I edited my question.
Which line is actually throwing the error? If you follow https://rsjazz.wordpress.com/2015/09/30/learning-to-fly-getting-started-with-the-rtc-java-apis/ you can set up your environment to step by step debug on the Jetty Server and you know which line causes this.
scmService.updateLocks(lockParameter, repositoryMonitor); is the line that causes the exception. I think I am doing the lock the wrong way but I found no documentation on this topic.
I think I am missing some kind of commit action. I am really stuck into this, can any Jazz developer just give me any idea?
If you look at the SDK com.ibm.team.filesystem.service.internal.rest.FilesystemRestService2 you will see that the method is running in a transaction.
In com.ibm.team.filesystem.service.tests.internal.FilesystemRestService2Test it is not but there is an example how it is run. You can try to debug com.ibm.team.scm.service.internal.ScmService.updateLocks(LockParameter, IRepositoryProgressMonitorHandle).
Just some thoughts as I haven't used this.