Selaa lähdekoodia

Windows: graph cleanup '-removing'

Signed-off-by: John Howard (VM) <jhoward@ntdev.microsoft.com>
John Howard (VM) 8 vuotta sitten
vanhempi
commit
9910b9a7f0
1 muutettua tiedostoa jossa 22 lisäystä ja 0 poistoa
  1. 22 0
      daemon/graphdriver/windows/windows.go

+ 22 - 0
daemon/graphdriver/windows/windows.go

@@ -412,7 +412,29 @@ func (d *Driver) Put(id string) error {
 }
 
 // Cleanup ensures the information the driver stores is properly removed.
+// We use this opportunity to cleanup any -removing folders which may be
+// still left if the daemon was killed while it was removing a layer.
 func (d *Driver) Cleanup() error {
+
+	items, err := ioutil.ReadDir(d.info.HomeDir)
+	if err != nil {
+		return err
+	}
+
+	// Note we don't return an error below - it's possible the files
+	// are locked. However, next time around after the daemon exits,
+	// we likely will be able to to cleanup successfully. Instead we log
+	// warnings if there are errors.
+	for _, item := range items {
+		if item.IsDir() && strings.HasSuffix(item.Name(), "-removing") {
+			if err := hcsshim.DestroyLayer(d.info, item.Name()); err != nil {
+				logrus.Warnf("Failed to cleanup %s: %s", item.Name(), err)
+			} else {
+				logrus.Infof("Cleaned up %s", item.Name())
+			}
+		}
+	}
+
 	return nil
 }