From 67dbffdfc822878eb8b0e22f265a1e03d6d91e86 Mon Sep 17 00:00:00 2001
From: Yaroslav Dynnikov <yaroslav.dynnikov@gmail.com>
Date: Wed, 25 Jan 2023 01:47:49 +0300
Subject: [PATCH] doc: review rpc::join in clustering.md

---
 docs/clustering.md | 32 ++++++++++++--------------------
 1 file changed, 12 insertions(+), 20 deletions(-)

diff --git a/docs/clustering.md b/docs/clustering.md
index 4d319f743a..395fffef5b 100644
--- a/docs/clustering.md
+++ b/docs/clustering.md
@@ -198,7 +198,7 @@ governor](#Topology-governor), также называемый `governor_loop`.
 Аргументом для нее является следующая структура:
 
 ```rust
-struct join::Request {
+struct rpc::join::Request {
     cluster_id: String,
     instance_id: Option<String>,
     replicaset_id: Option<String>,
@@ -207,10 +207,10 @@ struct join::Request {
 }
 ```
 
-Ответом служит структура:
+Ответом служит такая:
 
 ```rust
-struct JoinResponse {
+struct rpc::join::OkResponse {
     /// Добавленный инстанс (чтобы знать все ID)
     instance: Instance,
     /// Голосующие узлы (чтобы добавляемый инстанс мог наладить контакт)
@@ -231,33 +231,25 @@ struct Instance {
     peer_address: String,
     failure_domain: FailureDomain,
 
-    // целевая и текущая оценки уровня инстанса с точки зрения лидера кластера
-    target_grade: CurrentGrade,
+    // текущий и целевой грейды
     current_grade: CurrentGrade,
-
-    /// Индекс записи в Raft-журнале. Препятствует затиранию
-    /// более старыми записями по мере применения Raft-журнала.
-    commit_index: RaftIndex,
+    target_grade: TargetGrade,
 }
 ```
 
 Цель такого запроса сводится к добавлению нового инстанса в Raft-группу.
 Для этого алгоритма справедливы следующие тезисы:
 
-- `join::Request` отправляет всегда неинициализированный инстанс.
-- В зависимости от того, содержится ли в запросе `instance_id`,
-  проводится анализ его корректности (уникальности).
+- Запрос `rpc::join` всегда делает инстанс без снапшотов.
 - В процессе обработки запроса в Raft-журнал добавляется запись
-  `op::PersistPeer { peer }`, которая помимо всевозможных ID содержит
-  поля `current_grade: Offline`, `target_grade: Offline`, играющие
-  важную роль в обеспечении надежности кластера (подробнее о них в
-  разделе [topology governor](#Topology-governor)).
+  `op::PersistPeer { peer }`, при этом `current_grade: Offline`,
+  `target_grade: Offline` (подробнее о них в разделе [topology
+  governor](#Topology-governor)).
 - В ответ выдается всегда новый `raft_id`, никому другому ранее не
   принадлежавший.
-- Генерировать значение `raft_id` может только лидер Raft-группы.
-- Помимо всевозможных ID, ответ содержит список голосующих членов
-  Raft-группы. Они понадобятся новому инстансу для того чтобы знать
-  адреса соседей и общаться с ними.
+- Помимо идентификаторов нового инстанса, ответ содержит список
+  голосующих членов Raft-группы. Они необходимы новому инстансу для
+  того чтобы отвечать на запросы от Raft-лидера.
 - Также ответ содержит параметр `box_replication`, который требуется для
   правильной настройки репликации.
 
-- 
GitLab