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

Andrey Gura edited comment on IGNITE-602 at 8/4/17 12:13 PM:
-------------------------------------------------------------

Hi, [~SomeFire]

I think we can improve a couple of things in this implementation^

1. Need to avoid double look up of value from {{IdentityHashMap}} (the first - 
{{isSaved()}} method, and the second - {{getPostion()}}). One call of map.get() 
is enough.

2. It's hard enough to identify what exactly object referenced by {{\{position 
N\}}} expression. Better solution is referenced object label. For example 
result string will be look like this 
{{Node@62101a6c \[name=n1, next=Node \[name=n2, next=Node \[name=n3, 
next=Node@62101a6c\]]]}} where label starts with {{@}} character and represent 
hex string of identity hash code: 
{{Integer.toHexString(System.identityHashCode(some_obj))}}. 

Could you please tests that checks that resulting string is correct because in 
current implementation index calculation is wrong.

Also please fix code style issues.


was (Author: agura):
Hi, [~SomeFire]

I think we can improve a couple of things in this implementation^

1. Need to avoid double look up of value from {{IdentityHashMap}} (the first - 
{{isSaved()}} method, and the second - {{getPostion()}}). One call of map.get() 
is enough.

2. It's hard enough to identify what exactly object referenced by {{\{position 
N\}}} expression. Better solution is referenced object label. For example 
result string will be look like this 
{{Node@62101a6c \[name=n1, next=Node \[name=n2, next=Node \[name=n3, 
next=Node@62101a6c\]]]}} where label starts with {{@}} character and represent 
hex string of identity hash code: 
{{Integer.toHexString(System.identityHashCode(some_obj))}}. 

Also please fix code style issues.

> [Test] GridToStringBuilder is vulnerable for StackOverflowError caused by 
> infinite recursion
> --------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-602
>                 URL: https://issues.apache.org/jira/browse/IGNITE-602
>             Project: Ignite
>          Issue Type: Bug
>          Components: general
>            Reporter: Artem Shutak
>            Assignee: Ryabov Dmitrii
>              Labels: MakeTeamcityGreenAgain, Muted_test
>             Fix For: 2.2
>
>
> See test 
> org.gridgain.grid.util.tostring.GridToStringBuilderSelfTest#_testToStringCheckAdvancedRecursionPrevention
>  and related TODO in same source file.
> Also take a look at 
> http://stackoverflow.com/questions/11300203/most-efficient-way-to-prevent-an-infinite-recursion-in-tostring
> Test should be unmuted on TC after fix.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to