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