Hi William,

Please include the new conf when adding the group, i.e.
Client.getGroupManaApi(2).add(group1[1,2]).

Hope it helps.
Tsz-Wo

On Thu, Apr 7, 2022 at 5:11 PM 宋子阳 <[email protected]> wrote:

> Hi,
> Currently I’m integrating Ratis as our consensus backbone in Apache IoTDB,
> and I encountered weird situation that cause the system into livelock:
>
> My original configuration contains a single Group(1) with a single
> member(1), which is certainly the leader. Now I want to add a new member
> (follower 2) into this group, and I implement it as follows:
>
> Client.getGroupManaApi(2).add(group(1));
> Client.admin().setConfiguration([1,2]);
>
> Then I observed event sequence which causes the livelock:
> 1. addGroup successes and follower 2 lifecycle is STARTING
> 2. Leader 1 send the latest snapshot to follower 2, which contains the
> **old conf [1]**
> 3. Follower 2 successfully install snapshot, discovered itself excluded in
> the conf, and turns the lifecycle into CLOSE
> 4. Leader 1 recv installSnapshot reply, add new conf [1,2] to the log and
> applies this conf
> 5. Since Follower 2 is closed, Leader 1 step down to follower for
> LOST_MAJORITY_HEARTBEATS, and this group can’t serve anymore.
>
> Am I use the groupManagementApi or adminApi wrong? How can I solve this
> problem?
>
>
> William Song
> Apache IoTDB
>

Reply via email to