Skip to content

Commit

Permalink
Merge pull request #318 from retroflexer/fix-unstarted-member-name
Browse files Browse the repository at this point in the history
Bug 1821286: Unstarted members cannot be blank in the log/event messages
  • Loading branch information
openshift-merge-robot committed Apr 30, 2020
2 parents cac983f + cdade9b commit ac55a8b
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 2 deletions.
16 changes: 15 additions & 1 deletion pkg/etcdcli/etcdcli.go
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"fmt"
"net"
"net/url"
"reflect"
"strings"
"sync"
Expand Down Expand Up @@ -274,6 +275,19 @@ func (g *etcdClientGetter) GetMember(name string) (*etcdserverpb.Member, error)
return nil, apierrors.NewNotFound(schema.GroupResource{Group: "etcd.operator.openshift.io", Resource: "etcdmembers"}, name)
}

// If the member's name is not set, extract ip/hostname from peerURL. Useful with unstarted members.
func GetMemberNameOrHost(member *etcdserverpb.Member) string {
if len(member.Name) == 0 {
u, err := url.Parse(member.PeerURLs[0])
if err != nil {
klog.Errorf("unstarted member has invalid peerURL: %#v", err)
return "NAME-PENDING-BAD-PEER-URL"
}
return fmt.Sprintf("NAME-PENDING-%s", u.Hostname())
}
return member.Name
}

func (g *etcdClientGetter) UnhealthyMembers() ([]*etcdserverpb.Member, error) {
cli, err := g.getEtcdClient()
if err != nil {
Expand All @@ -294,7 +308,7 @@ func (g *etcdClientGetter) UnhealthyMembers() ([]*etcdserverpb.Member, error) {
for _, member := range membersResp.Members {
if len(member.ClientURLs) == 0 {
unhealthyMembers = append(unhealthyMembers, member)
unstartedMemberNames = append(unstartedMemberNames, member.Name)
unstartedMemberNames = append(unstartedMemberNames, GetMemberNameOrHost(member))
continue
}
ctx, cancel := context.WithCancel(context.Background())
Expand Down
Expand Up @@ -84,7 +84,7 @@ func (c *EtcdMembersController) reportEtcdMembers() error {
case etcdcli.EtcdMemberStatusAvailable:
availableMembers = append(availableMembers, m.Name)
case etcdcli.EtcdMemberStatusNotStarted:
unstartedMembers = append(unstartedMembers, m.Name)
unstartedMembers = append(unstartedMembers, etcdcli.GetMemberNameOrHost(m))
case etcdcli.EtcdMemberStatusUnhealthy:
unhealthyMembers = append(unhealthyMembers, m.Name)
}
Expand Down

0 comments on commit ac55a8b

Please sign in to comment.