Getting a Internal Repository Exception when trying to lock a resource from a deliver follow up action
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
Ralph Schoon
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER Oct 29 '15, 3:56 a.m.With this few data, no code and not even the slightest idea what call is done, what do you think?
Francisco Rodriguez
Oct 29 '15, 12:36 p.m.You are right, Ralph. I edited my question.
Ralph Schoon
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER Oct 29 '15, 2:40 p.m.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.
Francisco Rodriguez
Oct 30 '15, 2:36 p.m.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.
Francisco Rodriguez
Oct 30 '15, 11:56 p.m.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?
Ralph Schoon
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER Nov 02 '15, 3:31 a.m.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.