mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Fix volume plugin refecounting on daemon restart
Ensures all known volumes (known b/c they are persisted to disk) have their volume drivers refcounted properly. In testing this, I found an issue with `--live-restore` (required since currently the provided volume plugin doesn't keep state on restart) where restorted plugins did not have a plugin client loaded causing a panic when trying to use the plugin. Signed-off-by: Brian Goff <cpuguy83@gmail.com>
This commit is contained in:
parent
e435665658
commit
6ef1060cd0
7 changed files with 324 additions and 92 deletions
|
@ -253,6 +253,27 @@ func (s *DockerDaemonSuite) TestGraphdriverPlugin(c *check.C) {
|
|||
c.Assert(err, checker.IsNil, check.Commentf(out))
|
||||
}
|
||||
|
||||
func (s *DockerDaemonSuite) TestPluginVolumeRemoveOnRestart(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux, Network, IsAmd64)
|
||||
|
||||
s.d.Start(c, "--live-restore=true")
|
||||
|
||||
out, err := s.d.Cmd("plugin", "install", "--grant-all-permissions", pName)
|
||||
c.Assert(err, checker.IsNil, check.Commentf(out))
|
||||
c.Assert(strings.TrimSpace(out), checker.Contains, pName)
|
||||
|
||||
out, err = s.d.Cmd("volume", "create", "--driver", pName, "test")
|
||||
c.Assert(err, checker.IsNil, check.Commentf(out))
|
||||
|
||||
s.d.Restart(c, "--live-restore=true")
|
||||
|
||||
out, err = s.d.Cmd("plugin", "disable", pName)
|
||||
c.Assert(err, checker.IsNil, check.Commentf(out))
|
||||
out, err = s.d.Cmd("plugin", "rm", pName)
|
||||
c.Assert(err, checker.NotNil, check.Commentf(out))
|
||||
c.Assert(out, checker.Contains, "in use")
|
||||
}
|
||||
|
||||
func existsMountpointWithPrefix(mountpointPrefix string) (bool, error) {
|
||||
mounts, err := mount.GetMounts()
|
||||
if err != nil {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue