Mikhail Efremov created IGNITE-23974:
----------------------------------------

             Summary: Remove Replica#raftClient from the interface
                 Key: IGNITE-23974
                 URL: https://issues.apache.org/jira/browse/IGNITE-23974
             Project: Ignite
          Issue Type: Improvement
            Reporter: Mikhail Efremov


*Description*

The major expected result of the IGNITE-22313 is to encapsulate all 
RAFT-related code under the replication layer. The {{Replica#raftClient}} is 
the most last snippet outside replication layer that gives an access to RAFT.

We can't remove it completely for now because it uses in {{PartitionMover}}, 
but from a design point of view the last class should be deleted: it's logic 
serves only for retries on a rebalance error handling in 
{{RebalanceRaftGroupEventsListener#onReconfigurationError}}. Moreover all this 
logic we may move into the listener itself, because it doesnt' need a replica, 
only a raft client for {{changePeersAndLearnersAsync}} call retries. And 
further the whole listener may be moved under replication layer too as 
IGNITE-22313 implies.

But the refactoring demands a proper design to implement. The ticket should be 
a part of the corresponding activity.

*Motivation*

As IGNITE-22313 meant, we want to encapsulate all RAFT-related code under the 
replication layer completely.

*Definition of Done*

* {{Replica#raftClient}} is removed from the interface.
* {{@TestOnly}} method may be still saved in the certain implementation of 
{{Replica}} only.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to