Skip to content

Commit 440c7ed

Browse files
committed
Fix commit already exists not leasing
Signed-off-by: Derek McGowan <[email protected]>
1 parent b6107dc commit 440c7ed

1 file changed

Lines changed: 13 additions & 4 deletions

File tree

metadata/content.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -553,7 +553,9 @@ func (nw *namespacedWriter) Commit(ctx context.Context, size int64, expected dig
553553
nw.l.RLock()
554554
defer nw.l.RUnlock()
555555

556-
return update(ctx, nw.db, func(tx *bolt.Tx) error {
556+
var innerErr error
557+
558+
if err := update(ctx, nw.db, func(tx *bolt.Tx) error {
557559
bkt := getIngestsBucket(tx, nw.namespace)
558560
if bkt != nil {
559561
if err := bkt.DeleteBucket([]byte(nw.ref)); err != nil && err != bolt.ErrBucketNotFound {
@@ -562,13 +564,20 @@ func (nw *namespacedWriter) Commit(ctx context.Context, size int64, expected dig
562564
}
563565
dgst, err := nw.commit(ctx, tx, size, expected, opts...)
564566
if err != nil {
565-
return err
567+
if !errdefs.IsAlreadyExists(err) {
568+
return err
569+
}
570+
innerErr = err
566571
}
567572
if err := removeIngestLease(ctx, tx, nw.ref); err != nil {
568573
return err
569574
}
570575
return addContentLease(ctx, tx, dgst)
571-
})
576+
}); err != nil {
577+
return err
578+
}
579+
580+
return innerErr
572581
}
573582

574583
func (nw *namespacedWriter) commit(ctx context.Context, tx *bolt.Tx, size int64, expected digest.Digest, opts ...content.Opt) (digest.Digest, error) {
@@ -611,7 +620,7 @@ func (nw *namespacedWriter) commit(ctx context.Context, tx *bolt.Tx, size int64,
611620
bkt, err := createBlobBucket(tx, nw.namespace, actual)
612621
if err != nil {
613622
if err == bolt.ErrBucketExists {
614-
return "", errors.Wrapf(errdefs.ErrAlreadyExists, "content %v", actual)
623+
return actual, errors.Wrapf(errdefs.ErrAlreadyExists, "content %v", actual)
615624
}
616625
return "", err
617626
}

0 commit comments

Comments
 (0)