From 1444f089fcb824c23c032818923b6af142cbb5d0 Mon Sep 17 00:00:00 2001 From: Msk <118117161+Mskxn@users.noreply.github.com> Date: Wed, 30 Nov 2022 23:50:59 +0800 Subject: [PATCH] Fix go routine leaks Close the channel instead of write to it to avoid hanging goroutine. --- cluster/images/etcd/migrate/migrate_server.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cluster/images/etcd/migrate/migrate_server.go b/cluster/images/etcd/migrate/migrate_server.go index cf73849e689..da9c659cec3 100644 --- a/cluster/images/etcd/migrate/migrate_server.go +++ b/cluster/images/etcd/migrate/migrate_server.go @@ -66,10 +66,10 @@ func (r *EtcdMigrateServer) Start(version *EtcdVersion) error { } interval := time.NewTicker(time.Millisecond * 500) defer interval.Stop() - done := make(chan bool, 1) + done := make(chan bool) go func() { time.Sleep(time.Minute * 2) - done <- true + close(done) }() for { select { @@ -108,7 +108,7 @@ func (r *EtcdMigrateServer) Stop() error { timedout := make(chan bool) go func() { time.Sleep(gracefulWait) - timedout <- true + close(timedout) }() go func() { select { @@ -121,7 +121,7 @@ func (r *EtcdMigrateServer) Stop() error { } }() err = r.cmd.Wait() - stopped <- true + close(stopped) if exiterr, ok := err.(*exec.ExitError); ok { klog.Infof("etcd server stopped (signal: %s)", exiterr.Error()) // stopped