[
https://issues.apache.org/jira/browse/IGNITE-27156?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kirill Sizov reassigned IGNITE-27156:
--------------------------------------
Assignee: Kirill Sizov
> Rework RAFT client to wait for group availability
> -------------------------------------------------
>
> Key: IGNITE-27156
> URL: https://issues.apache.org/jira/browse/IGNITE-27156
> Project: Ignite
> Issue Type: Improvement
> Components: replication ai3
> Reporter: Vladislav Pyatkov
> Assignee: Kirill Sizov
> Priority: Major
> Labels: ignite-3
>
> h3. Motivation
> We have a generic timeout for any RAFT operation
> (RaftConfigurationSchema#retryTimeoutMillis), but for some cases we suppose
> that the operation has never ended. Also, reties are excessive in the time
> when the RAFT group is not formed.
> The new RAFT client API should get a timeout from outside, and waiting for
> availability may be solved using a topology-aware client (IGNITE-27154).
> h3. Definition of done
> A RAFT client that has a method to run a command with a timeout.
> {code}
> <R> CompletableFuture<R> run(Command cmd, long timeoutMillis)
> {code}
> The method has to match the following rules:
> If the service is called without a timeout (timeout = 0), a single attempt
> will be made to send the command for replication.
> If the service is called with an infinite timeout (timeout = Long.MAX_VALUE),
> replication attempts will continue indefinitely, or the call will wait until
> the service becomes ready.
> If the service is called with a bounded timeout, replication attempts will
> continue only for the specified duration (timeout).
> If the replication command cannot be executed due to the service being
> unavailable, a ReplicationGroupUnavailableException will be thrown.
> After implementing the client, it is recommended to *immediately integrate it
> into the CMG/MG manager*.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)