forked from TrueCloudLab/frostfs-node
[#377] shard: Support batch Inhume operation
Replace single target address in `InhumePrm` with the list of addresses. Change corresponding parameter in `WithTarget` and `MarkAsGarbage` methods to variadic. Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
0d6d195d0d
commit
3d7d074af4
3 changed files with 9 additions and 9 deletions
|
@ -32,7 +32,7 @@ var errInhumeFailure = errors.New("inhume operation failed")
|
||||||
// Inhume calls metabase. Inhume method to mark object as removed. It won't be
|
// Inhume calls metabase. Inhume method to mark object as removed. It won't be
|
||||||
// removed physically from shard until `Delete` operation.
|
// removed physically from shard until `Delete` operation.
|
||||||
func (e *StorageEngine) Inhume(prm *InhumePrm) (*InhumeRes, error) {
|
func (e *StorageEngine) Inhume(prm *InhumePrm) (*InhumeRes, error) {
|
||||||
shPrm := new(shard.InhumePrm).WithTarget(prm.addr, prm.tombstone)
|
shPrm := new(shard.InhumePrm).WithTarget(prm.tombstone, prm.addr)
|
||||||
|
|
||||||
res := e.inhume(prm.addr, shPrm, true)
|
res := e.inhume(prm.addr, shPrm, true)
|
||||||
if res == nil {
|
if res == nil {
|
||||||
|
|
|
@ -8,21 +8,21 @@ import (
|
||||||
|
|
||||||
// InhumePrm encapsulates parameters for inhume operation.
|
// InhumePrm encapsulates parameters for inhume operation.
|
||||||
type InhumePrm struct {
|
type InhumePrm struct {
|
||||||
target *objectSDK.Address
|
target []*objectSDK.Address
|
||||||
tombstone *objectSDK.Address
|
tombstone *objectSDK.Address
|
||||||
}
|
}
|
||||||
|
|
||||||
// InhumeRes encapsulates results of inhume operation.
|
// InhumeRes encapsulates results of inhume operation.
|
||||||
type InhumeRes struct{}
|
type InhumeRes struct{}
|
||||||
|
|
||||||
// WithTarget sets object address that should be inhumed and tombstone address
|
// WithTarget sets list of objects that should be inhumed and tombstone address
|
||||||
// as the reason for inhume operation.
|
// as the reason for inhume operation.
|
||||||
//
|
//
|
||||||
// Arguments should not be nil.
|
// tombstone should not be nil, addr should not be empty.
|
||||||
// Should not be called along with MarkAsGarbage.
|
// Should not be called along with MarkAsGarbage.
|
||||||
func (p *InhumePrm) WithTarget(addr, tombstone *objectSDK.Address) *InhumePrm {
|
func (p *InhumePrm) WithTarget(tombstone *objectSDK.Address, addrs ...*objectSDK.Address) *InhumePrm {
|
||||||
if p != nil {
|
if p != nil {
|
||||||
p.target = addr
|
p.target = addrs
|
||||||
p.tombstone = tombstone
|
p.tombstone = tombstone
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ func (p *InhumePrm) WithTarget(addr, tombstone *objectSDK.Address) *InhumePrm {
|
||||||
// MarkAsGarbage marks object to be physically removed from shard.
|
// MarkAsGarbage marks object to be physically removed from shard.
|
||||||
//
|
//
|
||||||
// Should not be called along with WithTarget.
|
// Should not be called along with WithTarget.
|
||||||
func (p *InhumePrm) MarkAsGarbage(addr *objectSDK.Address) *InhumePrm {
|
func (p *InhumePrm) MarkAsGarbage(addr ...*objectSDK.Address) *InhumePrm {
|
||||||
if p != nil {
|
if p != nil {
|
||||||
p.target = addr
|
p.target = addr
|
||||||
p.tombstone = nil
|
p.tombstone = nil
|
||||||
|
@ -44,7 +44,7 @@ func (p *InhumePrm) MarkAsGarbage(addr *objectSDK.Address) *InhumePrm {
|
||||||
// Inhume calls metabase. Inhume method to mark object as removed. It won't be
|
// Inhume calls metabase. Inhume method to mark object as removed. It won't be
|
||||||
// removed physically from blobStor and metabase until `Delete` operation.
|
// removed physically from blobStor and metabase until `Delete` operation.
|
||||||
func (s *Shard) Inhume(prm *InhumePrm) (*InhumeRes, error) {
|
func (s *Shard) Inhume(prm *InhumePrm) (*InhumeRes, error) {
|
||||||
metaPrm := new(meta.InhumePrm).WithAddress(prm.target)
|
metaPrm := new(meta.InhumePrm).WithAddresses(prm.target...)
|
||||||
|
|
||||||
if prm.tombstone != nil {
|
if prm.tombstone != nil {
|
||||||
metaPrm.WithTombstoneAddress(prm.tombstone)
|
metaPrm.WithTombstoneAddress(prm.tombstone)
|
||||||
|
|
|
@ -38,7 +38,7 @@ func testShardInhume(t *testing.T, sh *shard.Shard) {
|
||||||
putPrm.WithObject(obj.Object())
|
putPrm.WithObject(obj.Object())
|
||||||
|
|
||||||
inhPrm := new(shard.InhumePrm)
|
inhPrm := new(shard.InhumePrm)
|
||||||
inhPrm.WithTarget(obj.Object().Address(), ts.Object().Address())
|
inhPrm.WithTarget(ts.Object().Address(), obj.Object().Address())
|
||||||
|
|
||||||
getPrm := new(shard.GetPrm)
|
getPrm := new(shard.GetPrm)
|
||||||
getPrm.WithAddress(obj.Object().Address())
|
getPrm.WithAddress(obj.Object().Address())
|
||||||
|
|
Loading…
Reference in a new issue