From a5800c78fddba95388e9f61611c5335a2cdc03c3 Mon Sep 17 00:00:00 2001 From: Paul Holzinger Date: Wed, 4 May 2022 14:47:05 +0200 Subject: machine events: only open sockets when needed We should only open the socket when needed and not always at init time. [NO NEW TESTS NEEDED] Signed-off-by: Paul Holzinger --- cmd/podman/machine/machine.go | 32 ++++---------------------------- 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/cmd/podman/machine/machine.go b/cmd/podman/machine/machine.go index 4c566b11f..cf7542389 100644 --- a/cmd/podman/machine/machine.go +++ b/cmd/podman/machine/machine.go @@ -26,7 +26,6 @@ var ( // Pull in configured json library json = registry.JSONLibrary() - sockPaths []string // Paths to unix domain sockets for publishing openEventSock sync.Once // Singleton support for opening sockets as needed sockets []net.Conn // Opened sockets, if any @@ -35,7 +34,7 @@ var ( Use: "machine", Short: "Manage a virtual machine", Long: "Manage a virtual machine. Virtual machines are used to run Podman.", - PersistentPreRunE: initMachineEvents, + PersistentPreRunE: validate.NoOp, PersistentPostRunE: closeMachineEvents, RunE: validate.SubCommandExists, } @@ -79,17 +78,10 @@ func getMachines(toComplete string) ([]string, cobra.ShellCompDirective) { return suggestions, cobra.ShellCompDirectiveNoFileComp } -func initMachineEvents(cmd *cobra.Command, _ []string) error { - logrus.Debugf("Called machine %s.PersistentPreRunE(%s)", cmd.Name(), strings.Join(os.Args, " ")) - +func initMachineEvents() { sockPaths, err := resolveEventSock() if err != nil { - return err - } - - // No sockets found, so no need to publish events... - if len(sockPaths) == 0 { - return nil + logrus.Warnf("Failed to resolve machine event sockets, machine events will not be published: %v", err) } for _, path := range sockPaths { @@ -101,7 +93,6 @@ func initMachineEvents(cmd *cobra.Command, _ []string) error { logrus.Debugf("Machine event socket %q found", path) sockets = append(sockets, conn) } - return nil } func resolveEventSock() ([]string, error) { @@ -145,22 +136,7 @@ func resolveEventSock() ([]string, error) { } func newMachineEvent(status events.Status, event events.Event) { - openEventSock.Do(func() { - // No sockets where found, so no need to publish events... - if len(sockPaths) == 0 { - return - } - - for _, path := range sockPaths { - conn, err := (&net.Dialer{}).DialContext(registry.Context(), "unix", path) - if err != nil { - logrus.Warnf("Failed to open event socket %q: %v", path, err) - continue - } - logrus.Debugf("Machine event socket %q found", path) - sockets = append(sockets, conn) - } - }) + openEventSock.Do(initMachineEvents) event.Status = status event.Time = time.Now() -- cgit v1.2.3-54-g00ecf