[ 
https://issues.apache.org/jira/browse/IGNITE-11488?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16817809#comment-16817809
 ] 

Andrew Mashenkov commented on IGNITE-11488:
-------------------------------------------

Hi [~rykerzhang],

ConcurrentModificationException can be resolved either with adding 
synchronization to toString() method or exclude "singleDepsMsgs" and 
"remaining" from print.

ServiceDeploymentTask.toString() is called to print a warning from catch block. 
So, it looks like abnormal case and it is ok to add some latency here.
If you think it may affect performance when user deploy a lot of services, then 
we can exclude Collections from being printed in a warning.

Also, it is ok to split warning message into 2: for normal and debug purposes. 
And make warning message much simplere (with no collections and no sync) for 
normal case, but use extended output (toString()) with sync and with full 
ServiceDeploymentTask description for debug log level only.

 

> GridServiceProcessorBatchDeploySelfTest test fails sporadically
> ---------------------------------------------------------------
>
>                 Key: IGNITE-11488
>                 URL: https://issues.apache.org/jira/browse/IGNITE-11488
>             Project: Ignite
>          Issue Type: Test
>          Components: managed services
>            Reporter: Andrew Mashenkov
>            Assignee: Ryker Zhang
>            Priority: Major
>              Labels: MakeTeamcityGreenAgain, newbie
>
> GridServiceProcessorBatchDeploySelfTest.testCancelAllTopologyChange test 
> fails on TC sporadically with ConcurrentModificationException.
> Let's add synchronization to certain toString method.
>  
> {noformat}
>  [super=AbstractFailureHandler [ignoredFailureTypes=UnmodifiableSet 
> [SYSTEM_WORKER_BLOCKED, SYSTEM_CRITICAL_OPERATION_TIMEOUT]]], 
> failureCtx=FailureContext [type=SYSTEM_WORKER_TERMINATION, err=class 
> o.a.i.IgniteException: null]]
> class org.apache.ignite.IgniteException: null
>       at 
> org.apache.ignite.internal.util.tostring.GridToStringBuilder.toStringImpl0(GridToStringBuilder.java:1081)
>       at 
> org.apache.ignite.internal.util.tostring.GridToStringBuilder.toStringImpl(GridToStringBuilder.java:993)
>       at 
> org.apache.ignite.internal.util.tostring.GridToStringBuilder.toString(GridToStringBuilder.java:703)
>       at 
> org.apache.ignite.internal.util.tostring.GridToStringBuilder.toString(GridToStringBuilder.java:662)
>       at 
> org.apache.ignite.internal.processors.service.ServiceDeploymentTask.toString(ServiceDeploymentTask.java:854)
>       at java.lang.String.valueOf(String.java:2994)
>       at java.lang.StringBuilder.append(StringBuilder.java:131)
>       at 
> org.apache.ignite.internal.processors.service.ServiceDeploymentManager$ServicesDeploymentWorker.body(ServiceDeploymentManager.java:502)
>       at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
>       at java.lang.Thread.run(Thread.java:748)
> Caused by: java.util.ConcurrentModificationException
>       at java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)
>       at java.util.HashMap$EntryIterator.next(HashMap.java:1476)
>       at java.util.HashMap$EntryIterator.next(HashMap.java:1474)
>       at 
> org.apache.ignite.internal.util.tostring.GridToStringBuilder.addMap(GridToStringBuilder.java:923)
>       at 
> org.apache.ignite.internal.util.tostring.GridToStringBuilder.toString(GridToStringBuilder.java:846)
>       at 
> org.apache.ignite.internal.util.tostring.GridToStringBuilder.toStringImpl0(GridToStringBuilder.java:1065)
>       ... 9 more{noformat}
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to