Kirill Sizov created IGNITE-27434:
-------------------------------------

             Summary: 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


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)

Reply via email to