MCPcopy
hub / github.com/containerd/containerd / remove

Method remove

core/metadata/gc.go:993–1066  ·  view source on GitHub ↗

remove all buckets for the given node.

(ctx context.Context, tx *bolt.Tx, node gc.Node)

Source from the content-addressed store, hash-verified

991
992// remove all buckets for the given node.
993func (c *gcContext) remove(ctx context.Context, tx *bolt.Tx, node gc.Node) (any, error) {
994 v1bkt := tx.Bucket(bucketKeyVersion)
995 if v1bkt == nil {
996 return nil, nil
997 }
998
999 nsbkt := v1bkt.Bucket([]byte(node.Namespace))
1000 if nsbkt == nil {
1001 // Still remove object if refenced outside the db
1002 if cc, ok := c.contexts[node.Type]; ok {
1003 cc.Remove(node)
1004 }
1005 return nil, nil
1006 }
1007
1008 switch node.Type {
1009 case ResourceContent:
1010 cbkt := nsbkt.Bucket(bucketKeyObjectContent)
1011 if cbkt != nil {
1012 cbkt = cbkt.Bucket(bucketKeyObjectBlob)
1013 }
1014 if cbkt != nil {
1015 log.G(ctx).WithField("key", node.Key).Debug("remove content")
1016 return nil, cbkt.DeleteBucket([]byte(node.Key))
1017 }
1018 case ResourceSnapshot:
1019 sbkt := nsbkt.Bucket(bucketKeyObjectSnapshots)
1020 if sbkt != nil {
1021 ss, key, ok := strings.Cut(node.Key, "/")
1022 if !ok {
1023 return nil, fmt.Errorf("invalid snapshot gc key %s", node.Key)
1024 }
1025 ssbkt := sbkt.Bucket([]byte(ss))
1026 if ssbkt != nil {
1027 log.G(ctx).WithField("key", key).WithField("snapshotter", ss).Debug("remove snapshot")
1028 return &eventstypes.SnapshotRemove{
1029 Key: key,
1030 Snapshotter: ss,
1031 }, ssbkt.DeleteBucket([]byte(key))
1032 }
1033 }
1034 case ResourceImage:
1035 ibkt := nsbkt.Bucket(bucketKeyObjectImages)
1036 if ibkt != nil {
1037 log.G(ctx).WithField("key", node.Key).Debug("remove image")
1038 return &eventstypes.ImageDelete{
1039 Name: node.Key,
1040 }, ibkt.DeleteBucket([]byte(node.Key))
1041 }
1042 case ResourceLease:
1043 lbkt := nsbkt.Bucket(bucketKeyObjectLeases)
1044 if lbkt != nil {
1045 return nil, lbkt.DeleteBucket([]byte(node.Key))
1046 }
1047 case ResourceIngest:
1048 ibkt := nsbkt.Bucket(bucketKeyObjectContent)
1049 if ibkt != nil {
1050 ibkt = ibkt.Bucket(bucketKeyObjectIngests)

Callers 3

TestGCRemoveFunction · 0.80
TestCollectibleResourcesFunction · 0.80
GarbageCollectMethod · 0.80

Calls 2

RemoveMethod · 0.65
InfoMethod · 0.65

Tested by 2

TestGCRemoveFunction · 0.64
TestCollectibleResourcesFunction · 0.64