From d5883bdbfad0bb2e736ce159a2c705a84491a2f0 Mon Sep 17 00:00:00 2001 From: Tomofumi Hayashi Date: Fri, 4 Aug 2023 01:16:37 +0900 Subject: [PATCH] Fix multus-daemon quit process (#1133) --- cmd/multus-daemon/main.go | 13 ++++--------- pkg/server/config/manager.go | 7 ++++++- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cmd/multus-daemon/main.go b/cmd/multus-daemon/main.go index 298e62cef..8705211f6 100644 --- a/cmd/multus-daemon/main.go +++ b/cmd/multus-daemon/main.go @@ -167,15 +167,8 @@ func main() { }() } - wg.Add(1) - go func() { - <-serverDoneChannel - logging.Verbosef("multus-server done.") - wg.Done() - }() - wg.Wait() - // never reached + logging.Verbosef("multus daemon is exited") } func waitUntilAPIReady(socketPath string) error { @@ -223,8 +216,10 @@ func startMultusDaemon(ctx context.Context, daemonConfig *srv.ControllerNetConf, utilruntime.HandleError(fmt.Errorf("CNI server Serve() failed: %v", err)) } }, 0) + }() + go func() { + <-ctx.Done() server.Shutdown(context.Background()) - close(done) }() return nil diff --git a/pkg/server/config/manager.go b/pkg/server/config/manager.go index 32a80052f..7f9c0479b 100644 --- a/pkg/server/config/manager.go +++ b/pkg/server/config/manager.go @@ -217,6 +217,7 @@ func (m *Manager) MonitorPluginConfiguration(ctx context.Context, done chan<- st case <-ctx.Done(): logging.Verbosef("Stopped monitoring, closing channel ...") _ = m.configWatcher.Close() + close(done) return nil } } @@ -225,7 +226,11 @@ func (m *Manager) MonitorPluginConfiguration(ctx context.Context, done chan<- st // PersistMultusConfig persists the provided configuration to the disc, with // Read / Write permissions. The output file path is `/00-multus.conf` func (m *Manager) PersistMultusConfig(config string) (string, error) { - logging.Debugf("Writing Multus CNI configuration @ %s", m.multusConfigFilePath) + if _, err := os.Stat(m.multusConfigFilePath); err == nil { + logging.Debugf("Overwriting Multus CNI configuration @ %s", m.multusConfigFilePath) + } else { + logging.Debugf("Writing Multus CNI configuration @ %s", m.multusConfigFilePath) + } return m.multusConfigFilePath, os.WriteFile(m.multusConfigFilePath, []byte(config), UserRWPermission) }