From aaa36f3b4fb250d2921f35c09bcb01b6c31ad423 Mon Sep 17 00:00:00 2001 From: Andrey Smirnov Date: Mon, 5 Jul 2021 23:15:29 +0300 Subject: [PATCH] fix: ignore 'not a leader' error on forfeit leadership When forfeiting etcd leadership, it might be that the node still reports leadership status while not being a leader once the actual API call is used. We should ignore such an error as the node is not a leader. Signed-off-by: Andrey Smirnov --- internal/pkg/etcd/etcd.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/internal/pkg/etcd/etcd.go b/internal/pkg/etcd/etcd.go index d9527a4c41..e135f9b4fb 100644 --- a/internal/pkg/etcd/etcd.go +++ b/internal/pkg/etcd/etcd.go @@ -6,6 +6,7 @@ package etcd import ( "context" + "errors" "fmt" "log" "net/url" @@ -259,6 +260,11 @@ func (c *Client) ForfeitLeadership(ctx context.Context) (string, error) { _, err = c.MoveLeader(ctx, m.GetID()) if err != nil { + if errors.Is(err, rpctypes.ErrNotLeader) { + // this member is not a leader anymore, so nothing to be done for the forfeit leadership + return "", nil + } + return "", err }