mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
clientv3: support serializable MemberList operation
Signed-off-by: Benjamin Wang <wachao@vmware.com>
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user