Merge pull request #1765 from dmcgowan/rm-lease-resources
Add support for removing leases on resource removal
This commit is contained in:
@@ -155,7 +155,7 @@ func addSnapshotLease(ctx context.Context, tx *bolt.Tx, snapshotter, key string)
|
||||
|
||||
namespace, ok := namespaces.Namespace(ctx)
|
||||
if !ok {
|
||||
panic("namespace must already be required")
|
||||
panic("namespace must already be checked")
|
||||
}
|
||||
|
||||
bkt := getBucket(tx, bucketKeyVersion, []byte(namespace), bucketKeyObjectLeases, []byte(lid))
|
||||
@@ -176,6 +176,26 @@ func addSnapshotLease(ctx context.Context, tx *bolt.Tx, snapshotter, key string)
|
||||
return bkt.Put([]byte(key), nil)
|
||||
}
|
||||
|
||||
func removeSnapshotLease(ctx context.Context, tx *bolt.Tx, snapshotter, key string) error {
|
||||
lid, ok := leases.Lease(ctx)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
namespace, ok := namespaces.Namespace(ctx)
|
||||
if !ok {
|
||||
panic("namespace must already be checked")
|
||||
}
|
||||
|
||||
bkt := getBucket(tx, bucketKeyVersion, []byte(namespace), bucketKeyObjectLeases, []byte(lid), bucketKeyObjectSnapshots, []byte(snapshotter))
|
||||
if bkt == nil {
|
||||
// Key does not exist so we return nil
|
||||
return nil
|
||||
}
|
||||
|
||||
return bkt.Delete([]byte(key))
|
||||
}
|
||||
|
||||
func addContentLease(ctx context.Context, tx *bolt.Tx, dgst digest.Digest) error {
|
||||
lid, ok := leases.Lease(ctx)
|
||||
if !ok {
|
||||
@@ -199,3 +219,23 @@ func addContentLease(ctx context.Context, tx *bolt.Tx, dgst digest.Digest) error
|
||||
|
||||
return bkt.Put([]byte(dgst.String()), nil)
|
||||
}
|
||||
|
||||
func removeContentLease(ctx context.Context, tx *bolt.Tx, dgst digest.Digest) error {
|
||||
lid, ok := leases.Lease(ctx)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
namespace, ok := namespaces.Namespace(ctx)
|
||||
if !ok {
|
||||
panic("namespace must already be checked")
|
||||
}
|
||||
|
||||
bkt := getBucket(tx, bucketKeyVersion, []byte(namespace), bucketKeyObjectLeases, []byte(lid), bucketKeyObjectContent)
|
||||
if bkt == nil {
|
||||
// Key does not exist so we return nil
|
||||
return nil
|
||||
}
|
||||
|
||||
return bkt.Delete([]byte(dgst.String()))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user