Commit 086ca8ba authored by Brad Davidson's avatar Brad Davidson Committed by Brad Davidson

Fix premature etcd shutdown when joining an existing cluster

parent 60cd86bc
...@@ -297,26 +297,26 @@ func (e *ETCD) Start(ctx context.Context, clientAccessInfo *clientaccess.Info) e ...@@ -297,26 +297,26 @@ func (e *ETCD) Start(ctx context.Context, clientAccessInfo *clientaccess.Info) e
// join attempts to add a member to an existing cluster // join attempts to add a member to an existing cluster
func (e *ETCD) join(ctx context.Context, clientAccessInfo *clientaccess.Info) error { func (e *ETCD) join(ctx context.Context, clientAccessInfo *clientaccess.Info) error {
clientURLs, memberList, err := ClientURLs(ctx, clientAccessInfo, e.config.PrivateIP) clientCtx, cancel := context.WithTimeout(ctx, 20*time.Second)
defer cancel()
var (
cluster []string
add = true
)
clientURLs, memberList, err := ClientURLs(clientCtx, clientAccessInfo, e.config.PrivateIP)
if err != nil { if err != nil {
return err return err
} }
client, err := GetClient(ctx, e.runtime, clientURLs...) client, err := GetClient(clientCtx, e.runtime, clientURLs...)
if err != nil { if err != nil {
return err return err
} }
defer client.Close() defer client.Close()
ctx, cancel := context.WithTimeout(ctx, 20*time.Second) members, err := client.MemberList(clientCtx)
defer cancel()
var (
cluster []string
add = true
)
members, err := client.MemberList(ctx)
if err != nil { if err != nil {
logrus.Errorf("Failed to get member list from etcd cluster. Will assume this member is already added") logrus.Errorf("Failed to get member list from etcd cluster. Will assume this member is already added")
members = &clientv3.MemberListResponse{ members = &clientv3.MemberListResponse{
...@@ -349,7 +349,7 @@ func (e *ETCD) join(ctx context.Context, clientAccessInfo *clientaccess.Info) er ...@@ -349,7 +349,7 @@ func (e *ETCD) join(ctx context.Context, clientAccessInfo *clientaccess.Info) er
if add { if add {
logrus.Infof("Adding %s to etcd cluster %v", e.peerURL(), cluster) logrus.Infof("Adding %s to etcd cluster %v", e.peerURL(), cluster)
if _, err = client.MemberAddAsLearner(ctx, []string{e.peerURL()}); err != nil { if _, err = client.MemberAddAsLearner(clientCtx, []string{e.peerURL()}); err != nil {
return err return err
} }
cluster = append(cluster, fmt.Sprintf("%s=%s", e.name, e.peerURL())) cluster = append(cluster, fmt.Sprintf("%s=%s", e.name, e.peerURL()))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment