forked from TrueCloudLab/frostfs-node
[#1461] node: Unlock locked object on its lock removal
Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
This commit is contained in:
parent
72c044e2eb
commit
fed9e6679d
8 changed files with 93 additions and 14 deletions
|
@ -62,32 +62,42 @@ func TestDB_Lock(t *testing.T) {
|
|||
err = putBig(db, obj)
|
||||
require.NoError(t, err)
|
||||
|
||||
tombID := oidtest.ID()
|
||||
lockID := oidtest.ID()
|
||||
|
||||
id, _ := obj.ID()
|
||||
|
||||
// lock the object
|
||||
err = db.Lock(cnr, tombID, []oid.ID{id})
|
||||
err = db.Lock(cnr, lockID, []oid.ID{id})
|
||||
require.NoError(t, err)
|
||||
|
||||
var tombAddr oid.Address
|
||||
tombAddr.SetContainer(cnr)
|
||||
tombAddr.SetObject(tombID)
|
||||
tombAddr.SetObject(lockID)
|
||||
|
||||
// try to inhume locked object using tombstone
|
||||
err = meta.Inhume(db, objectcore.AddressOf(obj), tombAddr)
|
||||
require.ErrorAs(t, err, new(apistatus.ObjectLocked))
|
||||
|
||||
// free locked object
|
||||
var inhumePrm meta.InhumePrm
|
||||
inhumePrm.WithAddresses(tombAddr)
|
||||
inhumePrm.WithGCMark()
|
||||
|
||||
// inhume the tombstone
|
||||
_, err = db.Inhume(inhumePrm)
|
||||
require.NoError(t, err)
|
||||
|
||||
var lockAddr oid.Address
|
||||
lockAddr.SetObject(lockID)
|
||||
lockAddr.SetContainer(cnr)
|
||||
|
||||
err = db.FreeLockedBy([]oid.Address{lockAddr})
|
||||
require.NoError(t, err)
|
||||
|
||||
inhumePrm.WithAddresses(tombAddr)
|
||||
inhumePrm.WithGCMark()
|
||||
|
||||
// now we can inhume the object
|
||||
err = meta.Inhume(db, objectcore.AddressOf(obj), tombAddr)
|
||||
_, err = db.Inhume(inhumePrm)
|
||||
require.NoError(t, err)
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue