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)