[#222] Support Inhume and Delete in object service

Signed-off-by: Alex Vanin <alexey@nspcc.ru>
This commit is contained in:
Alex Vanin 2020-12-01 14:23:28 +03:00
parent 21708d5408
commit 351e4b4592
5 changed files with 46 additions and 20 deletions

View file

@ -177,17 +177,27 @@ type localObjectRemover struct {
log *logger.Logger
}
func (r *localObjectRemover) Delete(addr *objectSDK.Address) error {
type localObjectInhumer struct {
storage *engine.StorageEngine
log *logger.Logger
}
func (r *localObjectRemover) Delete(addr ...*objectSDK.Address) error {
_, err := r.storage.Delete(new(engine.DeletePrm).
WithAddress(addr),
WithAddress(addr...),
)
return err
}
func (r *localObjectRemover) DeleteObjects(list ...*objectSDK.Address) {
for _, a := range list {
if err := r.Delete(a); err != nil {
func (r *localObjectInhumer) DeleteObjects(ts *objectSDK.Address, addr ...*objectSDK.Address) {
prm := new(engine.InhumePrm)
for _, a := range addr {
prm.WithTarget(a, ts)
if _, err := r.storage.Inhume(prm); err != nil {
r.log.Error("could not delete object",
zap.Stringer("address", a),
zap.String("error", err.Error()),
@ -213,6 +223,11 @@ func initObjectService(c *cfg) {
log: c.log,
}
objInhumer := &localObjectInhumer{
storage: ls,
log: c.log,
}
objGC := gc.New(
gc.WithLogger(c.log),
gc.WithRemover(objRemover),
@ -287,7 +302,7 @@ func initObjectService(c *cfg) {
putsvc.WithNetworkMapSource(c.cfgObject.netMapStorage),
putsvc.WithLocalAddressSource(c),
putsvc.WithFormatValidatorOpts(
objectCore.WithDeleteHandler(objRemover),
objectCore.WithDeleteHandler(objInhumer),
),
putsvc.WithNetworkState(c.cfgNetmap.state),
putsvc.WithWorkerPool(c.cfgObject.pool.put),