forked from TrueCloudLab/frostfs-node
[#1175] object/fmt: Handle LOCK
objects
Make `FormatValidator.ValidateContent` to verify payload of `LOCK` objects. Pass locked objects to `Locker` interface. Require from `Locker.Lock` to return `apistatus.IrregularObjectLock` error on a corresponding condition. Also add error return to `DeleteHandler.DeleteObjects` method. Require from method to return `apistatus.ObjectLocked` error on a corresponding condition. Adopt implementations. Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
d163008b63
commit
ced854bc2e
5 changed files with 63 additions and 18 deletions
|
@ -32,11 +32,11 @@ func (e *StorageEngine) lock(idCnr cid.ID, locker oid.ID, locked []oid.ID) error
|
|||
for i := range locked {
|
||||
switch e.lockSingle(idCnr, locker, locked[i], true) {
|
||||
case 1:
|
||||
return apistatus.IrregularObjectLock{}
|
||||
return apistatus.LockNonRegularObject{}
|
||||
case 0:
|
||||
switch e.lockSingle(idCnr, locker, locked[i], false) {
|
||||
case 1:
|
||||
return apistatus.IrregularObjectLock{}
|
||||
return apistatus.LockNonRegularObject{}
|
||||
case 0:
|
||||
return errLockFailed
|
||||
}
|
||||
|
@ -53,7 +53,7 @@ func (e *StorageEngine) lock(idCnr cid.ID, locker oid.ID, locked []oid.ID) error
|
|||
func (e *StorageEngine) lockSingle(idCnr cid.ID, locker, locked oid.ID, checkExists bool) (status uint8) {
|
||||
// code is pretty similar to inhumeAddr, maybe unify?
|
||||
root := false
|
||||
var errIrregular apistatus.IrregularObjectLock
|
||||
var errIrregular apistatus.LockNonRegularObject
|
||||
|
||||
var addrLocked address.Address
|
||||
addrLocked.SetContainerID(&idCnr)
|
||||
|
|
|
@ -42,7 +42,7 @@ func (db *DB) Lock(cnr cid.ID, locker oid.ID, locked []oid.ID) error {
|
|||
}
|
||||
|
||||
if firstIrregularObjectType(tx, cnr, bucketKeysLocked...) != object.TypeRegular {
|
||||
return apistatus.IrregularObjectLock{}
|
||||
return apistatus.LockNonRegularObject{}
|
||||
}
|
||||
|
||||
bucketLocked, err := tx.CreateBucketIfNotExists(bucketNameLocked)
|
||||
|
|
|
@ -37,7 +37,7 @@ func TestDB_Lock(t *testing.T) {
|
|||
err := meta.Put(db, obj, nil)
|
||||
require.NoError(t, err, typ)
|
||||
|
||||
var e apistatus.IrregularObjectLock
|
||||
var e apistatus.LockNonRegularObject
|
||||
|
||||
// try to lock it
|
||||
err = db.Lock(cnr, *oidtest.ID(), []oid.ID{*obj.ID()})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue