[#378] metabase: Implement iterator over metabase graveyard

Implement `DB.IterateOverGraveyard` method that iterates over all graves and
passes passes their descriptors (new type `Grave`) to handler (new type
`GraveHandler`). `Grave` currently have buried object address and garbage
flag.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
Leonard Lyubich 2021-02-16 10:57:43 +03:00 committed by Alex Vanin
parent 3d7d074af4
commit d72d37a322
3 changed files with 142 additions and 0 deletions

View file

@ -97,6 +97,12 @@ func addressKey(addr *object.Address) []byte {
return []byte(addr.String())
}
// parses object address formed by addressKey.
func addressFromKey(k []byte) (*object.Address, error) {
a := object.NewAddress()
return a, a.Parse(string(k))
}
// objectKey returns key for K-V tables when key is an object id.
func objectKey(oid *object.ID) []byte {
return []byte(oid.String())