Use the new walk method for catalog enumeration

This change is primarily to make GC faster.

Signed-off-by: Sargun Dhillon <sargun@sargun.me>
This commit is contained in:
Sargun Dhillon 2017-11-29 15:49:19 -08:00
parent 35b29a609e
commit c7b0da2622
3 changed files with 2 additions and 14 deletions

View file

@ -88,13 +88,12 @@ func (bs *blobStore) Put(ctx context.Context, mediaType string, p []byte) (distr
} }
func (bs *blobStore) Enumerate(ctx context.Context, ingester func(dgst digest.Digest) error) error { func (bs *blobStore) Enumerate(ctx context.Context, ingester func(dgst digest.Digest) error) error {
specPath, err := pathFor(blobsPathSpec{}) specPath, err := pathFor(blobsPathSpec{})
if err != nil { if err != nil {
return err return err
} }
err = Walk(ctx, bs.driver, specPath, func(fileInfo driver.FileInfo) error { return bs.driver.Walk(ctx, specPath, func(fileInfo driver.FileInfo) error {
// skip directories // skip directories
if fileInfo.IsDir() { if fileInfo.IsDir() {
return nil return nil
@ -114,7 +113,6 @@ func (bs *blobStore) Enumerate(ctx context.Context, ingester func(dgst digest.Di
return ingester(digest) return ingester(digest)
}) })
return err
} }
// path returns the canonical path for the blob identified by digest. The blob // path returns the canonical path for the blob identified by digest. The blob

View file

@ -10,10 +10,6 @@ import (
"github.com/docker/distribution/registry/storage/driver" "github.com/docker/distribution/registry/storage/driver"
) )
// errFinishedWalk signals an early exit to the walk when the current query
// is satisfied.
var errFinishedWalk = errors.New("finished walk")
// Returns a list, or partial list, of repositories in the registry. // Returns a list, or partial list, of repositories in the registry.
// Because it's a quite expensive operation, it should only be used when building up // Because it's a quite expensive operation, it should only be used when building up
// an initial set of repositories. // an initial set of repositories.

View file

@ -237,7 +237,7 @@ func (lbs *linkedBlobStore) Enumerate(ctx context.Context, ingestor func(digest.
if err != nil { if err != nil {
return err return err
} }
err = Walk(ctx, lbs.blobStore.driver, rootPath, func(fileInfo driver.FileInfo) error { return lbs.driver.Walk(ctx, rootPath, func(fileInfo driver.FileInfo) error {
// exit early if directory... // exit early if directory...
if fileInfo.IsDir() { if fileInfo.IsDir() {
return nil return nil
@ -273,12 +273,6 @@ func (lbs *linkedBlobStore) Enumerate(ctx context.Context, ingestor func(digest.
return nil return nil
}) })
if err != nil {
return err
}
return nil
} }
func (lbs *linkedBlobStore) mount(ctx context.Context, sourceRepo reference.Named, dgst digest.Digest, sourceStat *distribution.Descriptor) (distribution.Descriptor, error) { func (lbs *linkedBlobStore) mount(ctx context.Context, sourceRepo reference.Named, dgst digest.Digest, sourceStat *distribution.Descriptor) (distribution.Descriptor, error) {