forked from TrueCloudLab/frostfs-node
f58234aa2f
Reduce public interface of this package. Later each result will contain an additional status, so it makes more sense to use the same functions and result processing everywhere. Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
43 lines
1 KiB
Go
43 lines
1 KiB
Go
package shard
|
|
|
|
import (
|
|
meta "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/metabase"
|
|
oid "github.com/nspcc-dev/neofs-sdk-go/object/id"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
// ToMoveItPrm encapsulates parameters for ToMoveIt operation.
|
|
type ToMoveItPrm struct {
|
|
addr oid.Address
|
|
}
|
|
|
|
// ToMoveItRes encapsulates results of ToMoveIt operation.
|
|
type ToMoveItRes struct{}
|
|
|
|
// WithAddress sets object address that should be marked to move into another
|
|
// shard.
|
|
func (p *ToMoveItPrm) WithAddress(addr oid.Address) {
|
|
if p != nil {
|
|
p.addr = addr
|
|
}
|
|
}
|
|
|
|
// ToMoveIt calls metabase.ToMoveIt method to mark object as relocatable to
|
|
// another shard.
|
|
func (s *Shard) ToMoveIt(prm ToMoveItPrm) (ToMoveItRes, error) {
|
|
if s.GetMode() != ModeReadWrite {
|
|
return ToMoveItRes{}, ErrReadOnlyMode
|
|
}
|
|
|
|
var toMovePrm meta.ToMoveItPrm
|
|
toMovePrm.WithAddress(prm.addr)
|
|
|
|
_, err := s.metaBase.ToMoveIt(toMovePrm)
|
|
if err != nil {
|
|
s.log.Debug("could not mark object for shard relocation in metabase",
|
|
zap.String("error", err.Error()),
|
|
)
|
|
}
|
|
|
|
return ToMoveItRes{}, nil
|
|
}
|