clientv3: support serializable MemberList operation

Signed-off-by: Benjamin Wang <wachao@vmware.com>
This commit is contained in:
Benjamin Wang
2023-02-08 14:30:42 +08:00
parent 0a8cdddd26
commit 1f0d361848
17 changed files with 85 additions and 28 deletions

View File

@@ -721,7 +721,7 @@ func (epc *EtcdProcessCluster) CloseProc(ctx context.Context, finder func(EtcdPr
// First remove member from the cluster
memberCtl := epc.Client(opts...)
memberList, err := memberCtl.MemberList(ctx)
memberList, err := memberCtl.MemberList(ctx, false)
if err != nil {
return fmt.Errorf("failed to get member list: %w", err)
}

View File

@@ -274,9 +274,13 @@ func AddTxnResponse(resp *clientv3.TxnResponse, jsonData string) {
}
}
func (ctl *EtcdctlV3) MemberList(ctx context.Context) (*clientv3.MemberListResponse, error) {
func (ctl *EtcdctlV3) MemberList(ctx context.Context, serializable bool) (*clientv3.MemberListResponse, error) {
var resp clientv3.MemberListResponse
err := ctl.spawnJsonCmd(ctx, &resp, "member", "list")
args := []string{"member", "list"}
if serializable {
args = append(args, "--consistency", "s")
}
err := ctl.spawnJsonCmd(ctx, &resp, args...)
return &resp, err
}

View File

@@ -418,3 +418,10 @@ func (c integrationClient) MemberAddAsLearner(ctx context.Context, _ string, pee
func (c integrationClient) MemberRemove(ctx context.Context, id uint64) (*clientv3.MemberRemoveResponse, error) {
return c.Client.MemberRemove(ctx, id)
}
func (c integrationClient) MemberList(ctx context.Context, serializable bool) (*clientv3.MemberListResponse, error) {
if serializable {
return c.Client.MemberList(ctx, clientv3.WithSerializable())
}
return c.Client.MemberList(ctx)
}

View File

@@ -78,7 +78,7 @@ type Client interface {
Txn(context context.Context, compares, ifSucess, ifFail []string, o config.TxnOptions) (*clientv3.TxnResponse, error)
MemberList(context context.Context) (*clientv3.MemberListResponse, error)
MemberList(context context.Context, serializable bool) (*clientv3.MemberListResponse, error)
MemberAdd(context context.Context, name string, peerAddrs []string) (*clientv3.MemberAddResponse, error)
MemberAddAsLearner(context context.Context, name string, peerAddrs []string) (*clientv3.MemberAddResponse, error)
MemberRemove(ctx context.Context, id uint64) (*clientv3.MemberRemoveResponse, error)