[
https://issues.apache.org/jira/browse/IGNITE-27434?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kirill Sizov updated IGNITE-27434:
----------------------------------
Epic Link: IGNITE-26981
> Create new RAFT client to wait for group availability
> ------------------------------------------------------
>
> Key: IGNITE-27434
> URL: https://issues.apache.org/jira/browse/IGNITE-27434
> Project: Ignite
> Issue Type: Improvement
> Reporter: Kirill Sizov
> 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:java}
> <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.
> * Create new raft client interface
> * Create a basic implementation
> * Create tests
> The run with timeout implementation will be done inĀ
> # IGNITE-27156
--
This message was sent by Atlassian Jira
(v8.20.10#820010)