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

Alexander Menshikov commented on IGNITE-7640:
---------------------------------------------

Wow, we have a real mess in `GridClusterStateProcessor`. We use volatile field 
in `DiscoveryDataClusterState` for async passing value from 
`GridClusterStateProcessor#onStateFinishMessage` to 
`GridClusterStateProcessor#publicApiActiveState`. And also we use future as a 
latch for sync this passing...

Also, I think there is a bug in line:

```Java

GridFutureAdapter<Boolean> transitionFut = 
transitionFuts.remove(transitionRequestId);

```

Because of `remove` call. One thread can already see `remove` but doesn't see 
field setter yet.

> Refactor DiscoveryDataClusterState to be immutable
> --------------------------------------------------
>
>                 Key: IGNITE-7640
>                 URL: https://issues.apache.org/jira/browse/IGNITE-7640
>             Project: Ignite
>          Issue Type: Improvement
>          Components: cache
>    Affects Versions: 2.4
>            Reporter: Alexey Goncharuk
>            Assignee: Alexander Menshikov
>            Priority: Major
>             Fix For: 2.5
>
>




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

Reply via email to