[
https://issues.apache.org/jira/browse/IGNITE-18612?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Roman Puchkovskiy resolved IGNITE-18612.
----------------------------------------
Resolution: Won't Fix
Not relevant as network messages are delivered until the recipient gets removed
from the topology
> Make RAFT snapshot streaming resistant to network glitches
> ----------------------------------------------------------
>
> Key: IGNITE-18612
> URL: https://issues.apache.org/jira/browse/IGNITE-18612
> Project: Ignite
> Issue Type: Improvement
> Reporter: Roman Puchkovskiy
> Assignee: Roman Puchkovskiy
> Priority: Major
> Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> Network is inherently unreliable (see IGNITE-18605). RAFT snapshot streaming
> might take dozens of minutes. Current implementation breaks on the first
> lost/improperly handled message, so If we get a glitch in the middle of a
> long snapshot installation, we'll waste a lot of resources.
> The idea is to:
> # Make requests idempotent (so that we can repeat a lost request).
> {{SnapshotMetaRequest}} is already idempotent. {{SnapshotMvDataRequest}} and
> {{SnapshotTxDataRequest}} can be provided with a sequenceNo (increased at the
> receiving side for each next request, but not increased for a retry of a
> previous request). As there is only one receiver, and it always works
> sequentially, on the sending side we'll have to only additionally remember
> the previous response and its sequenceNo to support idempotent retries that
> do not cause excessive cursor advancement.
> # On the receiving side, specify a sane timeout (like a few seconds) per
> request and retry requests that error or timeout (using the correct
> sequenceNo)
> # If an error happens while processing a request on the sending side, return
> an indication of an error to the receiver instead of just dropping the
> message (so that the receiver gets informed about the necessity to make a
> retry faster, AND the receiver can see whether it should stop retrying if the
> failure is fatal).
--
This message was sent by Atlassian Jira
(v8.20.10#820010)