Skip to content

Commit 6ffb018

Browse files
authored
fix: remove unneeded double locks in redis implementation of metadb (#3055)
fix: remove uneeded double locks in redis implementation of metadb Signed-off-by: Andrei Aaron <[email protected]>
1 parent 8f3533a commit 6ffb018

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

pkg/meta/redis/redis.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -750,8 +750,7 @@ func (rc *RedisDB) SetRepoReference(ctx context.Context, repo string,
750750
return err
751751
}
752752

753-
locks := []string{rc.getImageLockKey(imageMeta.Digest.String()), rc.getRepoLockKey(repo)}
754-
err = rc.withRSLocks(ctx, locks, func() error {
753+
err = rc.withRSLocks(ctx, []string{rc.getImageLockKey(imageMeta.Digest.String())}, func() error {
755754
err := rc.Client.HSet(ctx, rc.ImageMetaKey, imageMeta.Digest.String(), imageMetaBlob).Err()
756755
if err != nil {
757756
rc.Log.Error().Err(err).Str("hset", rc.ImageMetaKey).Str("digest", imageMeta.Digest.String()).
@@ -760,6 +759,13 @@ func (rc *RedisDB) SetRepoReference(ctx context.Context, repo string,
760759
return fmt.Errorf("failed to set image meta record for digest %s: %w", imageMeta.Digest.String(), err)
761760
}
762761

762+
return nil
763+
})
764+
if err != nil {
765+
return err
766+
}
767+
768+
err = rc.withRSLocks(ctx, []string{rc.getRepoLockKey(repo)}, func() error {
763769
protoRepoMeta, err := rc.getProtoRepoMeta(ctx, repo)
764770
if err != nil && !errors.Is(err, zerr.ErrRepoMetaNotFound) {
765771
return err
@@ -1805,8 +1811,7 @@ if there are no tags pointing to the digest, otherwise it's noop.
18051811
func (rc *RedisDB) RemoveRepoReference(repo, reference string, manifestDigest godigest.Digest) error {
18061812
ctx := context.Background()
18071813

1808-
locks := []string{rc.getImageLockKey(manifestDigest.String()), rc.getRepoLockKey(repo)}
1809-
err := rc.withRSLocks(ctx, locks, func() error {
1814+
err := rc.withRSLocks(ctx, []string{rc.getRepoLockKey(repo)}, func() error {
18101815
protoRepoMeta, err := rc.getProtoRepoMeta(ctx, repo)
18111816
if err != nil {
18121817
if errors.Is(err, zerr.ErrRepoMetaNotFound) {

0 commit comments

Comments
 (0)