From cb7ce3076d0ae553bd2a2aa64a9be145c144d1ed Mon Sep 17 00:00:00 2001 From: jingrui Date: Thu, 27 Jun 2019 17:07:21 +0800 Subject: [PATCH] docker: delete containerd db first reboot Change-Id: I90b5e2217df47cef71a410e43188476be751cebe Signed-off-by: jingrui --- components/engine/cmd/dockerd/daemon.go | 1 + components/engine/daemon/daemon.go | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/components/engine/cmd/dockerd/daemon.go b/components/engine/cmd/dockerd/daemon.go index ea00c56fde..9c2b6602b3 100644 --- a/components/engine/cmd/dockerd/daemon.go +++ b/components/engine/cmd/dockerd/daemon.go @@ -185,6 +185,7 @@ func (cli *DaemonCli) start(opts *daemonOptions) (err error) { return fmt.Errorf("Error starting daemon: %v", err) } + d.CleanupContainerdDBs() d.StoreHosts(hosts) // validate after NewDaemon has restored enabled plugins. Dont change order. diff --git a/components/engine/daemon/daemon.go b/components/engine/daemon/daemon.go index 72467eb62a..c36cc6395f 100644 --- a/components/engine/daemon/daemon.go +++ b/components/engine/daemon/daemon.go @@ -619,6 +619,20 @@ func (daemon *Daemon) cleanupLocalDB(db string) { } } +func (daemon *Daemon) CleanupContainerdDBs() { + // check db lock is exist, do nothing if file is existed + dbLockPath := filepath.Join(daemon.configStore.ExecRoot, "dblock") + _, err := os.Stat(dbLockPath) + if err == nil { + return + } + if !os.IsNotExist(err) { + logrus.Errorf("stat dblock failed %v", err) + return + } + daemon.cleanupLocalDB(filepath.Join(daemon.configStore.Root, "containerd/daemon/io.containerd.metadata.v1.bolt/meta.db")) +} + // DB files may corrupted on exception poweroff but can be rebuild at run time, // so we can remove DB files on OS starts avoid daemon can not startup. func (daemon *Daemon) cleanupLocalDBs() { @@ -638,7 +652,6 @@ func (daemon *Daemon) cleanupLocalDBs() { daemon.cleanupLocalDB(filepath.Join(daemon.configStore.Root, "builder/fscache.db")) daemon.cleanupLocalDB(filepath.Join(daemon.configStore.Root, "volumes/metadata.db")) daemon.cleanupLocalDB(filepath.Join(daemon.configStore.Root, "network/files/local-kv.db")) - // daemon.cleanupLocalDB(filepath.Join(daemon.configStore.Root, "containerd/daemon/io.containerd.metadata.v1.bolt/meta.db")) daemon.cleanupLocalDB(filepath.Join(daemon.configStore.Root, "accelerator/accel.db")) daemon.cleanupLocalDB(filepath.Join(daemon.configStore.Root, "buildkit/metadata.db")) daemon.cleanupLocalDB(filepath.Join(daemon.configStore.Root, "buildkit/cache.db")) -- 2.17.1