Ivan Andika created RATIS-2382:
----------------------------------
Summary: Support skip leadership check during ReadIndex
Key: RATIS-2382
URL: https://issues.apache.org/jira/browse/RATIS-2382
Project: Ratis
Issue Type: Improvement
Reporter: Ivan Andika
Assignee: Ivan Andika
The purpose of the leadership check for every ReadIndex is for the leader to
double check that it is the latest leader before returning to the ReadIndex.
Otherwise, leader might serve stale data when there is a split brain when there
are two concurrent leaders (which might be quite rare). This leadership check
seems to cause latency increase since it causes the readIndex call to block.
One improvement to reduce RTT time without reducing consistency is to use
leader lease, but looks like it might not be enough since heartbeats might
still be sent when leader lease expired. Leader lease also might cause longer
election time which might affect the availability.
We can support leader's readIndex to simply return without needing to wait for
AE to return (similar behavior to leader having a lease). Note that allowing
leader to skip this leadership check allows split brain scenario, which causes
the reads no longer be linearizable since it allows stale reads. With this in
mind, if there are use cases / workloads that care more about performance and
can tolerate to be "mostly" consistent (i.e. consistent under steady state,
with no election, network partitions, etc), they can enable this to improve the
latency of read index without leader lease issue.
We can add make this configurable and make it disabled by default.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)