diff --git a/cmd/registry/config-dev.yml b/cmd/registry/config-dev.yml index 24c81c2ca00..8193493920a 100644 --- a/cmd/registry/config-dev.yml +++ b/cmd/registry/config-dev.yml @@ -13,10 +13,10 @@ storage: accesskey: testy secretkey: testy region: us-west-1 - regionendpoint: http://10.9.8.73:80 + regionendpoint: http://10.9.8.95:80 # forcepathstyle: true # accelerate: false - bucket: test2 + bucket: test # encrypt: true # chunksize: 5242880 multipartcopychunksize: 33554432 diff --git a/registry/handlers/manifests.go b/registry/handlers/manifests.go index abd2986d1d2..6c75386fedb 100644 --- a/registry/handlers/manifests.go +++ b/registry/handlers/manifests.go @@ -6,6 +6,7 @@ import ( "mime" "net/http" "strings" + "time" "github.com/distribution/distribution/v3" "github.com/distribution/distribution/v3/internal/dcontext" @@ -123,7 +124,7 @@ func (imh *manifestHandler) GetManifest(w http.ResponseWriter, r *http.Request) } return } - imh.Digest = desc.Digest + imh.Digest = desc.Digest // 设置 digst } if etagMatch(r, imh.Digest.String()) { @@ -455,7 +456,9 @@ func (imh *manifestHandler) DeleteManifest(w http.ResponseWriter, r *http.Reques return } - err = manifests.Delete(imh, imh.Digest) + now := time.Now() + err = manifests.Delete(imh, imh.Digest) // 删除 /v2/repositories//_manifests/revisions///link + dcontext.GetLogger(imh).Infof("DeleteImageTag with digest %s with time: %s", imh.Digest, time.Since(now)) if err != nil { switch err { case digest.ErrDigestUnsupported: @@ -475,18 +478,22 @@ func (imh *manifestHandler) DeleteManifest(w http.ResponseWriter, r *http.Reques } tagService := imh.Repository.Tags(imh) + now = time.Now() referencedTags, err := tagService.Lookup(imh, distribution.Descriptor{Digest: imh.Digest}) + dcontext.GetLogger(imh).Infof("DeleteImageTag with lookup digest %s with time: %s", imh.Digest, time.Since(now)) if err != nil { imh.Errors = append(imh.Errors, err) return } + now = time.Now() for _, tag := range referencedTags { if err := tagService.Untag(imh, tag); err != nil { imh.Errors = append(imh.Errors, err) return } } + dcontext.GetLogger(imh).Infof("DeleteImageTag with untag digest %s with time: %s", imh.Digest, time.Since(now)) w.WriteHeader(http.StatusAccepted) } diff --git a/registry/storage/linkedblobstore.go b/registry/storage/linkedblobstore.go index 2920b9bfef8..2c75f768dd9 100644 --- a/registry/storage/linkedblobstore.go +++ b/registry/storage/linkedblobstore.go @@ -366,7 +366,7 @@ type linkedBlobStatter struct { var _ distribution.BlobDescriptorService = &linkedBlobStatter{} func (lbs *linkedBlobStatter) Stat(ctx context.Context, dgst digest.Digest) (distribution.Descriptor, error) { - blobLinkPath, err := lbs.linkPath(lbs.repository.Named().Name(), dgst) + blobLinkPath, err := lbs.linkPath(lbs.repository.Named().Name(), dgst) // /v2/repositories//_manifests/revisions///link if err != nil { return distribution.Descriptor{}, err } diff --git a/registry/storage/tagstore.go b/registry/storage/tagstore.go index 60845bc1908..d0db8cd75d8 100644 --- a/registry/storage/tagstore.go +++ b/registry/storage/tagstore.go @@ -24,14 +24,14 @@ type tagStore struct { // All returns all tags func (ts *tagStore) All(ctx context.Context) ([]string, error) { - pathSpec, err := pathFor(manifestTagsPathSpec{ + pathSpec, err := pathFor(manifestTagsPathSpec{ // /v2/repositories//_manifests/tags/ name: ts.repository.Named().Name(), }) if err != nil { return nil, err } - entries, err := ts.blobStore.driver.List(ctx, pathSpec) + entries, err := ts.blobStore.driver.List(ctx, pathSpec) // 以 s3 为例,列出 /v2/repositories//_manifests/tags/ 目录下的所有 entries if err != nil { switch err := err.(type) { case storagedriver.PathNotFoundError: @@ -78,7 +78,7 @@ func (ts *tagStore) Tag(ctx context.Context, tag string, desc distribution.Descr // resolve the current revision for name and tag. func (ts *tagStore) Get(ctx context.Context, tag string) (distribution.Descriptor, error) { - currentPath, err := pathFor(manifestTagCurrentPathSpec{ + currentPath, err := pathFor(manifestTagCurrentPathSpec{ // /v2/repositories//_manifests/tags//current/link name: ts.repository.Named().Name(), tag: tag, }) @@ -86,7 +86,7 @@ func (ts *tagStore) Get(ctx context.Context, tag string) (distribution.Descripto return distribution.Descriptor{}, err } - revision, err := ts.blobStore.readlink(ctx, currentPath) + revision, err := ts.blobStore.readlink(ctx, currentPath) // 从 link 文件或对象中读取对应的 revision if err != nil { switch err.(type) { case storagedriver.PathNotFoundError: @@ -101,7 +101,7 @@ func (ts *tagStore) Get(ctx context.Context, tag string) (distribution.Descripto // Untag removes the tag association func (ts *tagStore) Untag(ctx context.Context, tag string) error { - tagPath, err := pathFor(manifestTagPathSpec{ + tagPath, err := pathFor(manifestTagPathSpec{ // /v2/repositories//_manifests/tags// name: ts.repository.Named().Name(), tag: tag, }) @@ -152,7 +152,7 @@ func (ts *tagStore) Lookup(ctx context.Context, desc distribution.Descriptor) ([ tag: tag, } - tagLinkPath, _ := pathFor(tagLinkPathSpec) + tagLinkPath, _ := pathFor(tagLinkPathSpec) // /v2/repositories//_manifests/tags//current/link tagDigest, err := ts.blobStore.readlink(ctx, tagLinkPath) if err != nil { switch err.(type) {