From 9492354782e0216e7698c50532bae0ec23a8c13c Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Wed, 15 Dec 2021 21:45:01 +0100 Subject: [PATCH] daemon: remove daemon.discoveryWatcher Signed-off-by: Sebastiaan van Stijn --- daemon/daemon.go | 38 -------------------------------------- 1 file changed, 38 deletions(-) diff --git a/daemon/daemon.go b/daemon/daemon.go index 6221f286fa..fce36eef82 100644 --- a/daemon/daemon.go +++ b/daemon/daemon.go @@ -28,7 +28,6 @@ import ( "github.com/docker/docker/builder" "github.com/docker/docker/container" "github.com/docker/docker/daemon/config" - "github.com/docker/docker/daemon/discovery" "github.com/docker/docker/daemon/events" "github.com/docker/docker/daemon/exec" _ "github.com/docker/docker/daemon/graphdriver/register" // register graph drivers @@ -92,7 +91,6 @@ type Daemon struct { EventsService *events.Events netController libnetwork.NetworkController volumes *volumesservice.VolumesService - discoveryWatcher discovery.Reloader root string seccompEnabled bool apparmorEnabled bool @@ -522,8 +520,6 @@ func (daemon *Daemon) restore() error { } } - // Make sure networks are available before starting - daemon.waitForNetworks(c) if err := daemon.containerStart(c, "", "", true); err != nil { log.WithError(err).Error("failed to start container") } @@ -628,40 +624,6 @@ func (daemon *Daemon) RestartSwarmContainers() { group.Wait() } -// waitForNetworks is used during daemon initialization when starting up containers -// It ensures that all of a container's networks are available before the daemon tries to start the container. -// In practice it just makes sure the discovery service is available for containers which use a network that require discovery. -func (daemon *Daemon) waitForNetworks(c *container.Container) { - if daemon.discoveryWatcher == nil { - return - } - - // Make sure if the container has a network that requires discovery that the discovery service is available before starting - for netName := range c.NetworkSettings.Networks { - // If we get `ErrNoSuchNetwork` here, we can assume that it is due to discovery not being ready - // Most likely this is because the K/V store used for discovery is in a container and needs to be started - if _, err := daemon.netController.NetworkByName(netName); err != nil { - if _, ok := err.(libnetwork.ErrNoSuchNetwork); !ok { - continue - } - - // use a longish timeout here due to some slowdowns in libnetwork if the k/v store is on anything other than --net=host - // FIXME: why is this slow??? - dur := 60 * time.Second - timer := time.NewTimer(dur) - - logrus.WithField("container", c.ID).Debugf("Container %s waiting for network to be ready", c.Name) - select { - case <-daemon.discoveryWatcher.ReadyCh(): - case <-timer.C: - } - timer.Stop() - - return - } - } -} - func (daemon *Daemon) children(c *container.Container) map[string]*container.Container { return daemon.linkIndex.children(c) }