From e92314d4dc7742e4e2c005a132b49b79a7f6344b Mon Sep 17 00:00:00 2001 From: David Calavera Date: Tue, 12 Jan 2016 17:18:57 -0500 Subject: [PATCH] Remove duplicated lazy volume initialization. Signed-off-by: David Calavera Upstream-commit: aab3596397c7b4fceac9061625898b3d2606597d Component: engine --- components/engine/daemon/daemon.go | 4 ++++ components/engine/daemon/mounts.go | 9 +++++++++ components/engine/daemon/volumes.go | 14 ++++++++++++++ components/engine/daemon/volumes_unix.go | 9 ++------- components/engine/daemon/volumes_windows.go | 9 ++------- 5 files changed, 31 insertions(+), 14 deletions(-) diff --git a/components/engine/daemon/daemon.go b/components/engine/daemon/daemon.go index c48a16fa5d..bbecc677f4 100644 --- a/components/engine/daemon/daemon.go +++ b/components/engine/daemon/daemon.go @@ -283,6 +283,10 @@ func (daemon *Daemon) Register(container *container.Container) error { } } + if err := daemon.prepareMountPoints(container); err != nil { + return err + } + return nil } diff --git a/components/engine/daemon/mounts.go b/components/engine/daemon/mounts.go index c2976d443c..81a82753ec 100644 --- a/components/engine/daemon/mounts.go +++ b/components/engine/daemon/mounts.go @@ -8,6 +8,15 @@ import ( volumestore "github.com/docker/docker/volume/store" ) +func (daemon *Daemon) prepareMountPoints(container *container.Container) error { + for _, config := range container.MountPoints { + if err := daemon.lazyInitializeVolume(container.ID, config); err != nil { + return err + } + } + return nil +} + func (daemon *Daemon) removeMountPoints(container *container.Container, rm bool) error { var rmErrors []string for _, m := range container.MountPoints { diff --git a/components/engine/daemon/volumes.go b/components/engine/daemon/volumes.go index a7b648a56f..c0097679f6 100644 --- a/components/engine/daemon/volumes.go +++ b/components/engine/daemon/volumes.go @@ -153,3 +153,17 @@ func (daemon *Daemon) registerMountPoints(container *container.Container, hostCo return nil } + +// lazyInitializeVolume initializes a mountpoint's volume if needed. +// This happens after a daemon restart. +func (daemon *Daemon) lazyInitializeVolume(containerID string, m *volume.MountPoint) error { + if len(m.Driver) > 0 && m.Volume == nil { + v, err := daemon.volumes.GetWithRef(m.Name, m.Driver, containerID) + + if err != nil { + return err + } + m.Volume = v + } + return nil +} diff --git a/components/engine/daemon/volumes_unix.go b/components/engine/daemon/volumes_unix.go index 09c7ae1071..f257da770c 100644 --- a/components/engine/daemon/volumes_unix.go +++ b/components/engine/daemon/volumes_unix.go @@ -20,13 +20,8 @@ import ( func (daemon *Daemon) setupMounts(container *container.Container) ([]execdriver.Mount, error) { var mounts []execdriver.Mount for _, m := range container.MountPoints { - // Lazy initialize m.Volume if needed. This happens after a daemon restart - if len(m.Driver) > 0 && m.Volume == nil { - v, err := daemon.createVolume(m.Name, m.Driver, nil) - if err != nil { - return nil, err - } - m.Volume = v + if err := daemon.lazyInitializeVolume(container.ID, m); err != nil { + return nil, err } path, err := m.Setup() if err != nil { diff --git a/components/engine/daemon/volumes_windows.go b/components/engine/daemon/volumes_windows.go index 1efbc0e457..05a45c385d 100644 --- a/components/engine/daemon/volumes_windows.go +++ b/components/engine/daemon/volumes_windows.go @@ -18,13 +18,8 @@ import ( func (daemon *Daemon) setupMounts(container *container.Container) ([]execdriver.Mount, error) { var mnts []execdriver.Mount for _, mount := range container.MountPoints { // type is volume.MountPoint - // Lazy initialize m.Volume if needed. This happens after a daemon restart - if len(m.Driver) > 0 && m.Volume == nil { - v, err := daemon.createVolume(m.Name, m.Driver, nil) - if err != nil { - return nil, err - } - m.Volume = v + if err := daemon.lazyInitializeVolume(container.ID, mount); err != nil { + return nil, err } // If there is no source, take it from the volume path s := mount.Source