Treat sandboxes as root gc resources and scan referenced objects
Signed-off-by: Henry Wang <henwang@amazon.com>
This commit is contained in:
parent
2be87c1a75
commit
cf46d3c6fc
@ -430,6 +430,20 @@ func (c *gcContext) scanRoots(ctx context.Context, tx *bolt.Tx, nc chan<- gc.Nod
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bbkt := nbkt.Bucket(bucketKeyObjectSandboxes)
|
||||||
|
if bbkt != nil {
|
||||||
|
if err := bbkt.ForEach(func(k, v []byte) error {
|
||||||
|
if v != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
sbbkt := bbkt.Bucket(k)
|
||||||
|
return c.sendLabelRefs(ns, sbbkt, fn)
|
||||||
|
}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
c.active(ns, fn)
|
c.active(ns, fn)
|
||||||
}
|
}
|
||||||
return cerr
|
return cerr
|
||||||
|
@ -101,6 +101,9 @@ func TestGCRoots(t *testing.T) {
|
|||||||
addLeaseContent("ns3", "l1", dgst(1)),
|
addLeaseContent("ns3", "l1", dgst(1)),
|
||||||
addLeaseSnapshot("ns3", "l1", "overlay", "sn1"),
|
addLeaseSnapshot("ns3", "l1", "overlay", "sn1"),
|
||||||
addLeaseIngest("ns3", "l1", "ingest-1"),
|
addLeaseIngest("ns3", "l1", "ingest-1"),
|
||||||
|
|
||||||
|
addSandbox("ns3", "sandbox1", nil),
|
||||||
|
addSandbox("ns4", "sandbox1", labelmap(string(labelGCSnapRef)+"overlay", "sn1")),
|
||||||
}
|
}
|
||||||
|
|
||||||
expected := []gc.Node{
|
expected := []gc.Node{
|
||||||
@ -136,6 +139,7 @@ func TestGCRoots(t *testing.T) {
|
|||||||
gcnode(ResourceIngest, "ns3", "ingest-1"),
|
gcnode(ResourceIngest, "ns3", "ingest-1"),
|
||||||
gcnode(resourceContentFlat, "ns3", dgst(1).String()),
|
gcnode(resourceContentFlat, "ns3", dgst(1).String()),
|
||||||
gcnode(resourceSnapshotFlat, "ns3", "overlay/sn1"),
|
gcnode(resourceSnapshotFlat, "ns3", "overlay/sn1"),
|
||||||
|
gcnode(ResourceSnapshot, "ns4", "overlay/sn1"),
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := db.Update(func(tx *bolt.Tx) error {
|
if err := db.Update(func(tx *bolt.Tx) error {
|
||||||
@ -760,6 +764,16 @@ func addContainer(ns, name, snapshotter, snapshot string, labels map[string]stri
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func addSandbox(ns, name string, labels map[string]string) alterFunc {
|
||||||
|
return func(bkt *bolt.Bucket) error {
|
||||||
|
sbkt, err := createBuckets(bkt, ns, string(bucketKeyObjectSandboxes), name)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return boltutil.WriteLabels(sbkt, labels)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func createBuckets(bkt *bolt.Bucket, names ...string) (*bolt.Bucket, error) {
|
func createBuckets(bkt *bolt.Bucket, names ...string) (*bolt.Bucket, error) {
|
||||||
for _, name := range names {
|
for _, name := range names {
|
||||||
nbkt, err := bkt.CreateBucketIfNotExists([]byte(name))
|
nbkt, err := bkt.CreateBucketIfNotExists([]byte(name))
|
||||||
|
Loading…
Reference in New Issue
Block a user