diff --git a/registry/storage/vacuum.go b/registry/storage/vacuum.go index e074b45c9..ff981bb47 100644 --- a/registry/storage/vacuum.go +++ b/registry/storage/vacuum.go @@ -91,11 +91,30 @@ func (v Vacuum) RemoveRepository(repoName string) error { if err != nil { return err } - repoDir := path.Join(rootForRepository, repoName) - dcontext.GetLogger(v.ctx).Infof("Deleting repo: %s", repoDir) - err = v.driver.Delete(v.ctx, repoDir) + repoManifestDir := path.Join(rootForRepository, repoName, "_manifests") + dcontext.GetLogger(v.ctx).Infof("Deleting repo: %s", repoManifestDir) + err = v.driver.Delete(v.ctx, repoManifestDir) if err != nil { - return err + if _, ok := err.(driver.PathNotFoundError); !ok { + return err + } + } + repoLayerDir := path.Join(rootForRepository, repoName, "_layers") + dcontext.GetLogger(v.ctx).Infof("Deleting repo: %s", repoLayerDir) + err = v.driver.Delete(v.ctx, repoLayerDir) + if err != nil { + if _, ok := err.(driver.PathNotFoundError); !ok { + return err + } + } + + repoUploadDir := path.Join(rootForRepository, repoName, "_uploads") + dcontext.GetLogger(v.ctx).Infof("Deleting repo: %s", repoUploadDir) + err = v.driver.Delete(v.ctx, repoUploadDir) + if err != nil { + if _, ok := err.(driver.PathNotFoundError); !ok { + return err + } } return nil