[ 
https://issues.apache.org/jira/browse/IGNITE-18423?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Roman Puchkovskiy resolved IGNITE-18423.
----------------------------------------
    Resolution: Fixed

Fixed in IGNITE-20296

> It is possible for a node to receive a message before the sender appears in 
> topology
> ------------------------------------------------------------------------------------
>
>                 Key: IGNITE-18423
>                 URL: https://issues.apache.org/jira/browse/IGNITE-18423
>             Project: Ignite
>          Issue Type: Bug
>          Components: networking
>            Reporter: Roman Puchkovskiy
>            Priority: Major
>              Labels: ignite-3, tech-debt
>             Fix For: 3.0.0-beta2
>
>
> The scenario is as follows:
>  # Two nodes (A and B) know about each other (i.e. each of them has the other 
> node in its physical topology)
>  # A network partition happens, so the nodes disappear from their 
> counterparts' topologies
>  # The partition disappears, and A starts seeing B (i.e. B gets added to A's 
> view of the topology)
>  # A sends a message to B using invoke
>  # B fails to process the message (at least, it fails to send a response) 
> because A is not yet seen by B (A is not in B's view of the topology)
>  # B starts seeing A
> The problem is that a channel might be established before the other side node 
> is added to the topology.
> It seems that there are two paths we could follow:
>  # We don't use Scalecube's transport for sending messages; instead, we only 
> use its discovery capabilities, and Scalecube uses our transport. As a 
> result, our event listener (notified about a node being added to the 
> topology) might be out of sync with the actual connection event. It is 
> probable that Scalecube guarantees these events to be in sync, if its native 
> transport is used. We could investigate how it does it (if it does) and see 
> whether we can do the same.
>  # Alternatively, a node establishing a connection might present itself (send 
> the corresponding {{{}ClusterNode{}}}) as a part of a handshake procedure, 
> and we could immediately simulate the corresponding event on the receiving 
> side, hence closing the gap.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to