[
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)