Unverified Commit 75b8d71e authored by Erik Wilson's avatar Erik Wilson Committed by GitHub

Merge pull request #652 from erikwilson/update-tunnel-wait

Fix tunnel endpoint upgrade
parents 33a59542 23b07975
...@@ -47,7 +47,7 @@ func run(ctx context.Context, cfg cmds.Agent) error { ...@@ -47,7 +47,7 @@ func run(ctx context.Context, cfg cmds.Agent) error {
return err return err
} }
if err := tunnel.Setup(nodeConfig); err != nil { if err := tunnel.Setup(ctx, nodeConfig); err != nil {
return err return err
} }
......
...@@ -52,7 +52,7 @@ func getAddresses(endpoint *v1.Endpoints) []string { ...@@ -52,7 +52,7 @@ func getAddresses(endpoint *v1.Endpoints) []string {
return serverAddresses return serverAddresses
} }
func Setup(config *config.Node) error { func Setup(ctx context.Context, config *config.Node) error {
restConfig, err := clientcmd.BuildConfigFromFlags("", config.AgentConfig.KubeConfigNode) restConfig, err := clientcmd.BuildConfigFromFlags("", config.AgentConfig.KubeConfigNode)
if err != nil { if err != nil {
return err return err
...@@ -83,7 +83,6 @@ func Setup(config *config.Node) error { ...@@ -83,7 +83,6 @@ func Setup(config *config.Node) error {
disconnect[address] = connect(wg, address, config, transportConfig) disconnect[address] = connect(wg, address, config, transportConfig)
} }
} }
wg.Wait()
go func() { go func() {
connect: connect:
...@@ -134,6 +133,19 @@ func Setup(config *config.Node) error { ...@@ -134,6 +133,19 @@ func Setup(config *config.Node) error {
} }
}() }()
wait := make(chan int, 1)
go func() {
wg.Wait()
wait <- 0
}()
select {
case <-ctx.Done():
logrus.Error("tunnel context canceled while waiting for connection")
return ctx.Err()
case <-wait:
}
return nil return nil
} }
...@@ -178,6 +190,9 @@ func connect(waitGroup *sync.WaitGroup, address string, config *config.Node, tra ...@@ -178,6 +190,9 @@ func connect(waitGroup *sync.WaitGroup, address string, config *config.Node, tra
}) })
if ctx.Err() != nil { if ctx.Err() != nil {
if waitGroup != nil {
once.Do(waitGroup.Done)
}
logrus.Infof("Stopped tunnel to %s", wsURL) logrus.Infof("Stopped tunnel to %s", wsURL)
return return
} }
......
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