forked from TrueCloudLab/frostfs-node
[#1219] object/delete: Change approach of the tombstone broadcast
After `putsvc.Service` started to support additional container broadcast of the saved objects there is no more need to perform broadcast of tombstone object in `deletesvc.Service`. Make `putsvc.Service` to perform additional broadcast of `TOMBSTONE` objects. Remove `broadcastTombstone` stage from `deletesvc.execCtx`, from now it is encapsulated in `saveTombstone` stage. Remove no longer needed `putsvc.PutInitPrm.WithTraverseOption` method. Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
a55af18ad1
commit
14ea7b2c47
6 changed files with 11 additions and 43 deletions
|
@ -255,7 +255,7 @@ func (exec *execCtx) initTombstoneObject() bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (exec *execCtx) saveTombstone() bool {
|
func (exec *execCtx) saveTombstone() bool {
|
||||||
id, err := exec.svc.placer.put(exec, false)
|
id, err := exec.svc.placer.put(exec)
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
default:
|
default:
|
||||||
|
@ -277,22 +277,3 @@ func (exec *execCtx) saveTombstone() bool {
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (exec *execCtx) broadcastTombstone() bool {
|
|
||||||
_, err := exec.svc.placer.put(exec, true)
|
|
||||||
|
|
||||||
switch {
|
|
||||||
default:
|
|
||||||
exec.status = statusUndefined
|
|
||||||
exec.err = err
|
|
||||||
|
|
||||||
exec.log.Debug("could not save the tombstone",
|
|
||||||
zap.String("error", err.Error()),
|
|
||||||
)
|
|
||||||
case err == nil:
|
|
||||||
exec.status = statusOK
|
|
||||||
exec.err = nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return err == nil
|
|
||||||
}
|
|
||||||
|
|
|
@ -16,14 +16,7 @@ func (exec *execCtx) executeLocal() {
|
||||||
|
|
||||||
exec.log.Debug("tombstone structure successfully formed, saving...")
|
exec.log.Debug("tombstone structure successfully formed, saving...")
|
||||||
|
|
||||||
ok = exec.saveTombstone()
|
exec.saveTombstone()
|
||||||
if !ok {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
exec.log.Debug("tombstone successfilly saved, broadcasting...")
|
|
||||||
|
|
||||||
exec.broadcastTombstone()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (exec *execCtx) formTombstone() (ok bool) {
|
func (exec *execCtx) formTombstone() (ok bool) {
|
||||||
|
|
|
@ -51,7 +51,7 @@ type cfg struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
placer interface {
|
placer interface {
|
||||||
put(*execCtx, bool) (*oidSDK.ID, error)
|
put(*execCtx) (*oidSDK.ID, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
netInfo NetworkInfo
|
netInfo NetworkInfo
|
||||||
|
|
|
@ -6,7 +6,6 @@ import (
|
||||||
getsvc "github.com/nspcc-dev/neofs-node/pkg/services/object/get"
|
getsvc "github.com/nspcc-dev/neofs-node/pkg/services/object/get"
|
||||||
putsvc "github.com/nspcc-dev/neofs-node/pkg/services/object/put"
|
putsvc "github.com/nspcc-dev/neofs-node/pkg/services/object/put"
|
||||||
searchsvc "github.com/nspcc-dev/neofs-node/pkg/services/object/search"
|
searchsvc "github.com/nspcc-dev/neofs-node/pkg/services/object/search"
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/services/object_manager/placement"
|
|
||||||
"github.com/nspcc-dev/neofs-sdk-go/object"
|
"github.com/nspcc-dev/neofs-sdk-go/object"
|
||||||
addressSDK "github.com/nspcc-dev/neofs-sdk-go/object/address"
|
addressSDK "github.com/nspcc-dev/neofs-sdk-go/object/address"
|
||||||
oidSDK "github.com/nspcc-dev/neofs-sdk-go/object/id"
|
oidSDK "github.com/nspcc-dev/neofs-sdk-go/object/id"
|
||||||
|
@ -102,7 +101,7 @@ func (s *simpleIDWriter) WriteIDs(ids []*oidSDK.ID) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *putSvcWrapper) put(exec *execCtx, broadcast bool) (*oidSDK.ID, error) {
|
func (w *putSvcWrapper) put(exec *execCtx) (*oidSDK.ID, error) {
|
||||||
streamer, err := (*putsvc.Service)(w).Put(exec.context())
|
streamer, err := (*putsvc.Service)(w).Put(exec.context())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -114,10 +113,6 @@ func (w *putSvcWrapper) put(exec *execCtx, broadcast bool) (*oidSDK.ID, error) {
|
||||||
WithCommonPrm(exec.commonParameters()).
|
WithCommonPrm(exec.commonParameters()).
|
||||||
WithObject(exec.tombstoneObj.CutPayload())
|
WithObject(exec.tombstoneObj.CutPayload())
|
||||||
|
|
||||||
if broadcast {
|
|
||||||
initPrm.WithTraverseOption(placement.WithoutSuccessTracking())
|
|
||||||
}
|
|
||||||
|
|
||||||
err = streamer.Init(initPrm)
|
err = streamer.Init(initPrm)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
@ -29,14 +29,6 @@ func (p *PutInitPrm) WithCommonPrm(v *util.CommonPrm) *PutInitPrm {
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PutInitPrm) WithTraverseOption(opt placement.Option) *PutInitPrm {
|
|
||||||
if p != nil {
|
|
||||||
p.traverseOpts = append(p.traverseOpts, opt)
|
|
||||||
}
|
|
||||||
|
|
||||||
return p
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PutInitPrm) WithObject(v *object.Object) *PutInitPrm {
|
func (p *PutInitPrm) WithObject(v *object.Object) *PutInitPrm {
|
||||||
if p != nil {
|
if p != nil {
|
||||||
p.hdr = v
|
p.hdr = v
|
||||||
|
|
|
@ -10,6 +10,7 @@ import (
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/services/object/util"
|
"github.com/nspcc-dev/neofs-node/pkg/services/object/util"
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/services/object_manager/placement"
|
"github.com/nspcc-dev/neofs-node/pkg/services/object_manager/placement"
|
||||||
"github.com/nspcc-dev/neofs-node/pkg/services/object_manager/transformer"
|
"github.com/nspcc-dev/neofs-node/pkg/services/object_manager/transformer"
|
||||||
|
"github.com/nspcc-dev/neofs-sdk-go/object"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Streamer struct {
|
type Streamer struct {
|
||||||
|
@ -160,9 +161,15 @@ func (p *Streamer) newCommonTarget(prm *PutInitPrm) transformer.ObjectTarget {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// enable additional container broadcast on non-local operation
|
||||||
|
// if object has TOMBSTONE type.
|
||||||
|
withBroadcast := !prm.common.LocalOnly() && prm.hdr.Type() == object.TypeTombstone
|
||||||
|
|
||||||
return &distributedTarget{
|
return &distributedTarget{
|
||||||
traversal: traversal{
|
traversal: traversal{
|
||||||
opts: prm.traverseOpts,
|
opts: prm.traverseOpts,
|
||||||
|
|
||||||
|
extraBroadcastEnabled: withBroadcast,
|
||||||
},
|
},
|
||||||
remotePool: p.remotePool,
|
remotePool: p.remotePool,
|
||||||
localPool: p.localPool,
|
localPool: p.localPool,
|
||||||
|
|
Loading…
Reference in a new issue