From 54c589101f9c451202ea33680d002e14eb714618 Mon Sep 17 00:00:00 2001 From: "Xiaolei.Liang" Date: Wed, 26 Mar 2025 18:59:53 +0800 Subject: [PATCH 1/2] Update vacuum.go remove repository, redirect delete the repository directory, thus, repository such as dir0/dir1:tag1, dir0/dir1/dir2:tag2, when we delete repository dir0/dir1, the dir0/dir1/dir2 also deleted . Signed-off-by: Xiaolei.Liang Signed-off-by: liangxiaolei5 --- registry/storage/vacuum.go | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/registry/storage/vacuum.go b/registry/storage/vacuum.go index e074b45c9..6131fb891 100644 --- a/registry/storage/vacuum.go +++ b/registry/storage/vacuum.go @@ -91,9 +91,22 @@ 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 + } + 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 { + 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 { return err } From 10a83bad91473471ee66962f1d0daa15ec731f36 Mon Sep 17 00:00:00 2001 From: "Xiaolei.Liang" Date: Wed, 26 Mar 2025 20:25:43 +0800 Subject: [PATCH 2/2] fix: removerepository skip pathNotfound error. removerepository skip pathNotfound error. Signed-off-by: liangxiaolei5 --- registry/storage/vacuum.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/registry/storage/vacuum.go b/registry/storage/vacuum.go index 6131fb891..ff981bb47 100644 --- a/registry/storage/vacuum.go +++ b/registry/storage/vacuum.go @@ -95,20 +95,26 @@ func (v Vacuum) RemoveRepository(repoName string) error { 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 { - return err + 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 { - return err + if _, ok := err.(driver.PathNotFoundError); !ok { + return err + } } return nil