[URGENT] RTC - Infinite post call loop problem
Hi !
I am developing some participants. I get a error message as follows.
* Error message:
I do not know the reason of it, but I guess it is from infinite post call loop.
* I found the guess with log.
The participant is activated in same state.
If user request saving with web page save button, the plugin is called.
It is ended with updating a attribute value of same workitem in same state. At that point,
there is infinite post call loop. So RTC display message as above in a few minutes.
Is there any person who experienced this error in the past ? Help me !
I am developing some participants. I get a error message as follows.
* Error message:
The server is not responding or a page navigation occurred before an operation completed.
Check that your server connection is working and that the server is operational,
then try the action again or refresh the page.
I do not know the reason of it, but I guess it is from infinite post call loop.
* I found the guess with log.
The participant is activated in same state.
If user request saving with web page save button, the plugin is called.
It is ended with updating a attribute value of same workitem in same state. At that point,
there is infinite post call loop. So RTC display message as above in a few minutes.
Is there any person who experienced this error in the past ? Help me !
2 answers
I reenact this problem in the JKE Banking sample project.
I can also find an infinite loop calling in the console as follows.
* We do not use if-clause as follows to save workitem in same state.
if(oldState.equals(newState) == false)
* Participant source :
IWorkItem newWorkItem = (IWorkItem) saveParameter.getNewState();
IWorkItem oldWorkItem = (IWorkItem) saveParameter.getOldState();
String workitemType = newWorkItem.getWorkItemType();
// In story workitem case
if(workitemType.equals("com.ibm.team.apt.workItemType.story")){
System.out.println("WORKITEM - " + newWorkItem.getId());
Identifier<IState> newStateId = newWorkItem.getState2();
Identifier<IState> oldStateId = oldWorkItem != null ? oldWorkItem.getState2() : null;
String newState = newStateId.getStringIdentifier();
String oldState = oldStateId != null ? oldStateId.getStringIdentifier() : null;
System.out.println("oldState=" + newState);
System.out.println("newState=" + oldState);
IWorkItem wiCopy = (IWorkItem) getService(IWorkItemServer.class)
.getAuditableCommon()
.resolveAuditable(newWorkItem, IWorkItem.FULL_PROFILE, monitor)
.getWorkingCopy();
// Set Description
wiCopy.setHTMLDescription(XMLString.createFromPlainText("test description ..."));
// save workitem
Set<String> additionalParams = new HashSet<String>();
additionalParams.add(IExtensionsDefinitions.LSG_AMS_EXTENSION_ID);
getService(IWorkItemServer.class).saveWorkItem3(wiCopy, null, null, additionalParams);
System.out.println("Setting description is completed ...");
* Log in concole
* ccm.log
java.lang.StackOverflowError
at com.ibm.team.repository.service.internal.diagnostics.ExecutingServiceMonitor.preInvoke(ExecutingServiceMonitor.java:32)
at com.ibm.team.repository.service.internal.diagnostics.ExecutingServiceMonitor.preInvoke(ExecutingServiceMonitor.java:1)
at com.ibm.team.repository.service.internal.monitoring.ServiceExecutionMonitorRegistry.sendPreInvoke(ServiceExecutionMonitorRegistry.java:101)
at com.ibm.team.repository.service.internal.monitoring.ServiceExecutionMonitorRegistry.sendPreInvoke(ServiceExecutionMonitorRegistry.java:1)
at com.ibm.team.repository.common.transport.internal.registry.AbstractActivationManagerOwner.handlePreInvoke(AbstractActivationManagerOwner.java:990)
at com.ibm.team.repository.common.transport.internal.registry.AbstractActivationManagerOwner.access$5(AbstractActivationManagerOwner.java:988)
at com.ibm.team.repository.common.transport.internal.registry.AbstractActivationManagerOwner$1.preInvoke(AbstractActivationManagerOwner.java:579)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.preInvoke(ExportProxyServiceRecord.java:505)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:350)
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 $Proxy52.getProvider(Unknown Source)
at com.ibm.team.repository.service.internal.schemagen.PersistentMappingService.getDbProvider(PersistentMappingService.java:318)
at sun.reflect.GeneratedMethodAccessor117.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 $Proxy53.getDbProvider(Unknown Source)
at com.ibm.team.repository.service.internal.ComponentMetadataProviderManagerService.getDbProvider(ComponentMetadataProviderManagerService.java:228)
at sun.reflect.GeneratedMethodAccessor118.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 $Proxy59.getDbProvider(Unknown Source)
at com.ibm.team.repository.service.internal.query.sqlgen.AbstractSqlGenerator.getDbProvider(AbstractSqlGenerator.java:845)
at com.ibm.team.repository.service.internal.query.sqlgen.PredicateGenerator.useHashedComparison(PredicateGenerator.java:859)
at com.ibm.team.repository.service.internal.query.sqlgen.PredicateGenerator.addBasicComparison(PredicateGenerator.java:816)
at com.ibm.team.repository.service.internal.query.sqlgen.PredicateGenerator.addPredicate(PredicateGenerator.java:93)
at com.ibm.team.repository.service.internal.query.sqlgen.PredicateGenerator.addBinaryConditional(PredicateGenerator.java:775)
at com.ibm.team.repository.service.internal.query.sqlgen.PredicateGenerator.addPredicate(PredicateGenerator.java:95)
at com.ibm.team.repository.service.internal.query.sqlgen.PredicateGenerator.toSqlOn(PredicateGenerator.java:75)
at com.ibm.team.repository.service.internal.query.sqlgen.WhereClauseGenerator.addFilter(WhereClauseGenerator.java:61)
at com.ibm.team.repository.service.internal.query.sqlgen.WhereClauseGenerator.toSqlOn(WhereClauseGenerator.java:37)
at com.ibm.team.repository.service.internal.query.sqlgen.QueryGenerator.toSqlOn(QueryGenerator.java:277)
at com.ibm.team.repository.service.internal.query.sqlgen.QueryGenerator.toSqlQuery(QueryGenerator.java:57)
at com.ibm.team.repository.service.internal.query.sqlgen.SqlQueryGenerator.generate(SqlQueryGenerator.java:71)
at com.ibm.team.repository.service.internal.ExecuteDataQuery.doServerQueryData(ExecuteDataQuery.java:84)
at com.ibm.team.repository.service.internal.ExecuteDataQuery.doQueryData(ExecuteDataQuery.java:122)
at com.ibm.team.repository.service.internal.RdbRepositoryDataMediator.queryData(RdbRepositoryDataMediator.java:900)
at com.ibm.team.repository.service.internal.AbstractQueryService.performQuery(AbstractQueryService.java:70)
at com.ibm.team.repository.service.internal.QueryService.doExecuteItemQuery(QueryService.java:336)
at com.ibm.team.repository.service.internal.QueryService.access$0(QueryService.java:331)
at com.ibm.team.repository.service.internal.QueryService$1.run(QueryService.java:178)
at com.ibm.team.repository.service.internal.QueryService$1.run(QueryService.java:1)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runTransaction(RepositoryDatabase.java:339)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runInTransaction(RepositoryDatabase.java:263)
at com.ibm.team.repository.service.internal.PrimitiveTransactionService.runInTransaction(PrimitiveTransactionService.java:110)
at sun.reflect.GeneratedMethodAccessor248.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 $Proxy91.runInTransaction(Unknown Source)
at com.ibm.team.repository.service.internal.QueryService.executeItemQuery(QueryService.java:167)
at com.ibm.team.repository.service.internal.QueryService.queryItems(QueryService.java:477)
at sun.reflect.GeneratedMethodAccessor573.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 $Proxy138.queryItems(Unknown Source)
...
Help me !
I can also find an infinite loop calling in the console as follows.
* We do not use if-clause as follows to save workitem in same state.
if(oldState.equals(newState) == false)
* Participant source :
IWorkItem newWorkItem = (IWorkItem) saveParameter.getNewState();
IWorkItem oldWorkItem = (IWorkItem) saveParameter.getOldState();
String workitemType = newWorkItem.getWorkItemType();
// In story workitem case
if(workitemType.equals("com.ibm.team.apt.workItemType.story")){
System.out.println("WORKITEM - " + newWorkItem.getId());
Identifier<IState> newStateId = newWorkItem.getState2();
Identifier<IState> oldStateId = oldWorkItem != null ? oldWorkItem.getState2() : null;
String newState = newStateId.getStringIdentifier();
String oldState = oldStateId != null ? oldStateId.getStringIdentifier() : null;
System.out.println("oldState=" + newState);
System.out.println("newState=" + oldState);
IWorkItem wiCopy = (IWorkItem) getService(IWorkItemServer.class)
.getAuditableCommon()
.resolveAuditable(newWorkItem, IWorkItem.FULL_PROFILE, monitor)
.getWorkingCopy();
// Set Description
wiCopy.setHTMLDescription(XMLString.createFromPlainText("test description ..."));
// save workitem
Set<String> additionalParams = new HashSet<String>();
additionalParams.add(IExtensionsDefinitions.LSG_AMS_EXTENSION_ID);
getService(IWorkItemServer.class).saveWorkItem3(wiCopy, null, null, additionalParams);
System.out.println("Setting description is completed ...");
* Log in concole
* ccm.log
java.lang.StackOverflowError
at com.ibm.team.repository.service.internal.diagnostics.ExecutingServiceMonitor.preInvoke(ExecutingServiceMonitor.java:32)
at com.ibm.team.repository.service.internal.diagnostics.ExecutingServiceMonitor.preInvoke(ExecutingServiceMonitor.java:1)
at com.ibm.team.repository.service.internal.monitoring.ServiceExecutionMonitorRegistry.sendPreInvoke(ServiceExecutionMonitorRegistry.java:101)
at com.ibm.team.repository.service.internal.monitoring.ServiceExecutionMonitorRegistry.sendPreInvoke(ServiceExecutionMonitorRegistry.java:1)
at com.ibm.team.repository.common.transport.internal.registry.AbstractActivationManagerOwner.handlePreInvoke(AbstractActivationManagerOwner.java:990)
at com.ibm.team.repository.common.transport.internal.registry.AbstractActivationManagerOwner.access$5(AbstractActivationManagerOwner.java:988)
at com.ibm.team.repository.common.transport.internal.registry.AbstractActivationManagerOwner$1.preInvoke(AbstractActivationManagerOwner.java:579)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.preInvoke(ExportProxyServiceRecord.java:505)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:350)
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 $Proxy52.getProvider(Unknown Source)
at com.ibm.team.repository.service.internal.schemagen.PersistentMappingService.getDbProvider(PersistentMappingService.java:318)
at sun.reflect.GeneratedMethodAccessor117.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 $Proxy53.getDbProvider(Unknown Source)
at com.ibm.team.repository.service.internal.ComponentMetadataProviderManagerService.getDbProvider(ComponentMetadataProviderManagerService.java:228)
at sun.reflect.GeneratedMethodAccessor118.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 $Proxy59.getDbProvider(Unknown Source)
at com.ibm.team.repository.service.internal.query.sqlgen.AbstractSqlGenerator.getDbProvider(AbstractSqlGenerator.java:845)
at com.ibm.team.repository.service.internal.query.sqlgen.PredicateGenerator.useHashedComparison(PredicateGenerator.java:859)
at com.ibm.team.repository.service.internal.query.sqlgen.PredicateGenerator.addBasicComparison(PredicateGenerator.java:816)
at com.ibm.team.repository.service.internal.query.sqlgen.PredicateGenerator.addPredicate(PredicateGenerator.java:93)
at com.ibm.team.repository.service.internal.query.sqlgen.PredicateGenerator.addBinaryConditional(PredicateGenerator.java:775)
at com.ibm.team.repository.service.internal.query.sqlgen.PredicateGenerator.addPredicate(PredicateGenerator.java:95)
at com.ibm.team.repository.service.internal.query.sqlgen.PredicateGenerator.toSqlOn(PredicateGenerator.java:75)
at com.ibm.team.repository.service.internal.query.sqlgen.WhereClauseGenerator.addFilter(WhereClauseGenerator.java:61)
at com.ibm.team.repository.service.internal.query.sqlgen.WhereClauseGenerator.toSqlOn(WhereClauseGenerator.java:37)
at com.ibm.team.repository.service.internal.query.sqlgen.QueryGenerator.toSqlOn(QueryGenerator.java:277)
at com.ibm.team.repository.service.internal.query.sqlgen.QueryGenerator.toSqlQuery(QueryGenerator.java:57)
at com.ibm.team.repository.service.internal.query.sqlgen.SqlQueryGenerator.generate(SqlQueryGenerator.java:71)
at com.ibm.team.repository.service.internal.ExecuteDataQuery.doServerQueryData(ExecuteDataQuery.java:84)
at com.ibm.team.repository.service.internal.ExecuteDataQuery.doQueryData(ExecuteDataQuery.java:122)
at com.ibm.team.repository.service.internal.RdbRepositoryDataMediator.queryData(RdbRepositoryDataMediator.java:900)
at com.ibm.team.repository.service.internal.AbstractQueryService.performQuery(AbstractQueryService.java:70)
at com.ibm.team.repository.service.internal.QueryService.doExecuteItemQuery(QueryService.java:336)
at com.ibm.team.repository.service.internal.QueryService.access$0(QueryService.java:331)
at com.ibm.team.repository.service.internal.QueryService$1.run(QueryService.java:178)
at com.ibm.team.repository.service.internal.QueryService$1.run(QueryService.java:1)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runTransaction(RepositoryDatabase.java:339)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runInTransaction(RepositoryDatabase.java:263)
at com.ibm.team.repository.service.internal.PrimitiveTransactionService.runInTransaction(PrimitiveTransactionService.java:110)
at sun.reflect.GeneratedMethodAccessor248.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 $Proxy91.runInTransaction(Unknown Source)
at com.ibm.team.repository.service.internal.QueryService.executeItemQuery(QueryService.java:167)
at com.ibm.team.repository.service.internal.QueryService.queryItems(QueryService.java:477)
at sun.reflect.GeneratedMethodAccessor573.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 $Proxy138.queryItems(Unknown Source)
...
Help me !
Comments
Indradri Basu
Apr 24 '13, 3:31 a.m.You may want to look at the application server logs like SystemOut.log or catalina.log and ccm.log for errors. Posting errors from the logs might give better clues. If I have to guess, this error can come due to memory issues as well.
benjamin oh
Apr 24 '13, 11:53 p.m.Thank you for comment.