MCPcopy Index your code
hub / github.com/containerd/containerd / commit

Method commit

core/metadata/content.go:650–717  ·  view source on GitHub ↗
(ctx context.Context, tx *bolt.Tx, size int64, expected digest.Digest, opts ...content.Opt)

Source from the content-addressed store, hash-verified

648}
649
650func (nw *namespacedWriter) commit(ctx context.Context, tx *bolt.Tx, size int64, expected digest.Digest, opts ...content.Opt) (digest.Digest, int64, error) {
651 var base content.Info
652 for _, opt := range opts {
653 if err := opt(&base); err != nil {
654 if nw.w != nil {
655 nw.w.Close()
656 }
657 return "", 0, err
658 }
659 }
660 if err := validateInfo(&base); err != nil {
661 if nw.w != nil {
662 nw.w.Close()
663 }
664 return "", 0, err
665 }
666
667 var actual digest.Digest
668 if nw.w == nil {
669 if size != 0 && size != nw.desc.Size {
670 return "", 0, fmt.Errorf("%q failed size validation: %v != %v: %w", nw.ref, nw.desc.Size, size, errdefs.ErrFailedPrecondition)
671 }
672 if expected != "" && expected != nw.desc.Digest {
673 return "", 0, fmt.Errorf("%q unexpected digest: %w", nw.ref, errdefs.ErrFailedPrecondition)
674 }
675 size = nw.desc.Size
676 actual = nw.desc.Digest
677 } else {
678 status, err := nw.w.Status()
679 if err != nil {
680 nw.w.Close()
681 return "", 0, err
682 }
683 if size != 0 && size != status.Offset {
684 nw.w.Close()
685 return "", 0, fmt.Errorf("%q failed size validation: %v != %v: %w", nw.ref, status.Offset, size, errdefs.ErrFailedPrecondition)
686 }
687 size = status.Offset
688
689 if err := nw.w.Commit(ctx, size, expected); err != nil && !errdefs.IsAlreadyExists(err) {
690 return "", 0, err
691 }
692 actual = nw.w.Digest()
693 }
694
695 bkt, err := createBlobBucket(tx, nw.namespace, actual)
696 if err != nil {
697 if err == errbolt.ErrBucketExists {
698 return actual, 0, fmt.Errorf("content %v: %w", actual, errdefs.ErrAlreadyExists)
699 }
700 return "", 0, err
701 }
702
703 commitTime := time.Now().UTC()
704
705 sizeEncoded, err := encodeInt(size)
706 if err != nil {
707 return "", 0, err

Callers 1

CommitMethod · 0.95

Calls 10

WriteTimestampsFunction · 0.92
WriteLabelsFunction · 0.92
validateInfoFunction · 0.85
createBlobBucketFunction · 0.85
encodeIntFunction · 0.85
PutMethod · 0.80
CloseMethod · 0.65
StatusMethod · 0.65
CommitMethod · 0.65
DigestMethod · 0.65

Tested by

no test coverage detected