Skip to content

Commit

Permalink
set default etcd client timeout
Browse files Browse the repository at this point in the history
Signed-off-by: lan.tian <lance5890@163.com>
  • Loading branch information
lance5890 committed Feb 24, 2023
1 parent c793de4 commit 40d21b4
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 9 deletions.
2 changes: 2 additions & 0 deletions pkg/cmd/verify/backupstorage.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,8 @@ func (v *verifyBackupStorage) isStorageAdequate(ctx context.Context) (bool, erro
}
defer cli.Close()

ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
members, err := cli.MemberList(ctx)
if err != nil {
klog.Warningf("failed checking member list: %v", err)
Expand Down
29 changes: 20 additions & 9 deletions pkg/etcdcli/etcdcli.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ const (
BootstrapIPAnnotationKey = "alpha.installer.openshift.io/etcd-bootstrap"
DefaultDialTimeout = 15 * time.Second
DefragDialTimeout = 60 * time.Second
DefaultClientTimeout = 30 * time.Second
)

type etcdClientGetter struct {
Expand Down Expand Up @@ -118,7 +119,7 @@ func (g *etcdClientGetter) getEtcdClient() (*clientv3.Client, error) {
g.clientLock.Lock()
defer g.clientLock.Unlock()
if reflect.DeepEqual(g.lastClientConfigKey, etcdEndpoints) && g.cachedClient != nil {
ccx, ccancel := context.WithCancel(context.Background())
ccx, ccancel := context.WithTimeout(context.Background(), DefaultClientTimeout)
defer ccancel()
_, err = g.cachedClient.MemberList(ccx)
if err == nil {
Expand Down Expand Up @@ -183,7 +184,7 @@ func getEtcdClientWithClientOpts(endpoints []string, opts ...ClientOption) (*cli
return nil, fmt.Errorf("failed to make etcd client for endpoints %v: %w", endpoints, err)
}
// Test client connection.
ccx, ccancel := context.WithCancel(context.Background())
ccx, ccancel := context.WithTimeout(context.Background(), DefaultClientTimeout)
defer ccancel()
_, err = cli.MemberList(ccx)
if err != nil {
Expand All @@ -204,7 +205,7 @@ func (g *etcdClientGetter) MemberAdd(peerURL string) error {
return err
}

ctx, cancel := context.WithCancel(context.Background())
ctx, cancel := context.WithTimeout(context.Background(), DefaultClientTimeout)
defer cancel()

membersResp, err := cli.MemberList(ctx)
Expand All @@ -229,7 +230,7 @@ func (g *etcdClientGetter) MemberAdd(peerURL string) error {
}

func (g *etcdClientGetter) MemberUpdatePeerURL(id uint64, peerURLs []string) error {
ctx, cancel := context.WithCancel(context.Background())
ctx, cancel := context.WithTimeout(context.Background(), DefaultClientTimeout)
defer cancel()
if members, err := g.MemberList(ctx); err != nil {
g.eventRecorder.Eventf("MemberUpdate", "updating member %d with peers %v", id, strings.Join(peerURLs, ","))
Expand Down Expand Up @@ -264,7 +265,7 @@ func (g *etcdClientGetter) MemberRemove(member string) error {
return err
}

ctx, cancel := context.WithCancel(context.Background())
ctx, cancel := context.WithTimeout(context.Background(), DefaultClientTimeout)
defer cancel()

membersResp, err := cli.MemberList(ctx)
Expand All @@ -274,7 +275,7 @@ func (g *etcdClientGetter) MemberRemove(member string) error {

for _, m := range membersResp.Members {
if m.Name == member {
ctx, cancel := context.WithCancel(context.Background())
ctx, cancel := context.WithTimeout(context.Background(), DefaultClientTimeout)
defer cancel()

_, err = cli.MemberRemove(ctx, m.ID)
Expand All @@ -295,6 +296,8 @@ func (g *etcdClientGetter) MemberList(ctx context.Context) ([]*etcdserverpb.Memb
return nil, err
}

ctx, cancel := context.WithTimeout(ctx, DefaultClientTimeout)
defer cancel()
membersResp, err := cli.MemberList(ctx)
if err != nil {
return nil, err
Expand All @@ -309,11 +312,13 @@ func (g *etcdClientGetter) Status(ctx context.Context, clientURL string) (*clien
if err != nil {
return nil, err
}
ctx, cancel := context.WithTimeout(ctx, DefaultClientTimeout)
defer cancel()
return cli.Status(ctx, clientURL)
}

func (g *etcdClientGetter) GetMember(name string) (*etcdserverpb.Member, error) {
ctx, cancel := context.WithCancel(context.Background())
ctx, cancel := context.WithTimeout(context.Background(), DefaultClientTimeout)
defer cancel()

members, err := g.MemberList(ctx)
Expand Down Expand Up @@ -347,7 +352,7 @@ func (g *etcdClientGetter) UnhealthyMembers() ([]*etcdserverpb.Member, error) {
return nil, fmt.Errorf("could not get etcd client %v", err)
}

ctx, cancel := context.WithCancel(context.Background())
ctx, cancel := context.WithTimeout(context.Background(), DefaultClientTimeout)
defer cancel()

etcdCluster, err := cli.MemberList(ctx)
Expand Down Expand Up @@ -378,6 +383,8 @@ func (g *etcdClientGetter) HealthyMembers(ctx context.Context) ([]*etcdserverpb.
return nil, err
}

ctx, cancel := context.WithTimeout(ctx, DefaultClientTimeout)
defer cancel()
etcdCluster, err := cli.MemberList(ctx)
if err != nil {
return nil, err
Expand All @@ -397,6 +404,8 @@ func (g *etcdClientGetter) MemberHealth(ctx context.Context) (memberHealth, erro
return nil, err
}

ctx, cancel := context.WithTimeout(ctx, DefaultClientTimeout)
defer cancel()
etcdCluster, err := cli.MemberList(ctx)
if err != nil {
return nil, err
Expand Down Expand Up @@ -430,7 +439,7 @@ func (g *etcdClientGetter) MemberStatus(member *etcdserverpb.Member) string {
return EtcdMemberStatusNotStarted
}

ctx, cancel := context.WithCancel(context.Background())
ctx, cancel := context.WithTimeout(context.Background(), DefaultClientTimeout)
_, err = cli.Status(ctx, member.ClientURLs[0])
cancel()
if err != nil {
Expand All @@ -448,6 +457,8 @@ func (g *etcdClientGetter) Defragment(ctx context.Context, member *etcdserverpb.
}
defer cli.Close()

ctx, cancel := context.WithTimeout(ctx, DefaultClientTimeout)
defer cancel()
resp, err := cli.Defragment(ctx, member.ClientURLs[0])
if err != nil {
return nil, err
Expand Down

0 comments on commit 40d21b4

Please sign in to comment.