[#1377] oid, cid: Upgrade SDK package

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
Leonard Lyubich 2022-05-12 19:37:46 +03:00 committed by LeL
parent f65898a354
commit f15e6e888f
118 changed files with 1455 additions and 886 deletions

View file

@ -171,7 +171,7 @@ func restoreContainers(cmd *cobra.Command, _ []string) error {
return fmt.Errorf("%w: %v", errInvalidContainerResponse, err)
}
if len(old.Value) != 0 {
id := cid.New()
var id cid.ID
id.SetSHA256(hv)
cmd.Printf("Container %s is already deployed.\n", id)
continue
@ -314,7 +314,7 @@ func getCIDFilterFunc(cmd *cobra.Command) (func([]byte) bool, error) {
}
for i := range rawIDs {
err := cid.New().Parse(rawIDs[i])
err := new(cid.ID).DecodeString(rawIDs[i])
if err != nil {
return nil, fmt.Errorf("can't parse CID %s: %w", rawIDs[i], err)
}
@ -324,9 +324,9 @@ func getCIDFilterFunc(cmd *cobra.Command) (func([]byte) bool, error) {
var v [32]byte
copy(v[:], rawID)
id := cid.New()
var id cid.ID
id.SetSHA256(v)
idStr := id.String()
idStr := id.EncodeToString()
n := sort.Search(len(rawIDs), func(i int) bool { return rawIDs[i] >= idStr })
return n < len(rawIDs) && rawIDs[n] == idStr
}, nil

View file

@ -420,12 +420,13 @@ func (x DeleteObjectRes) TombstoneAddress() *addressSDK.Address {
func DeleteObject(prm DeleteObjectPrm) (*DeleteObjectRes, error) {
var delPrm client.PrmObjectDelete
if id := prm.objAddr.ContainerID(); id != nil {
delPrm.FromContainer(*id)
cnr, ok := prm.objAddr.ContainerID()
if ok {
delPrm.FromContainer(cnr)
}
if id := prm.objAddr.ObjectID(); id != nil {
delPrm.ByID(*id)
if id, ok := prm.objAddr.ObjectID(); ok {
delPrm.ByID(id)
}
if prm.sessionToken != nil {
@ -450,8 +451,8 @@ func DeleteObject(prm DeleteObjectPrm) (*DeleteObjectRes, error) {
}
var addr addressSDK.Address
addr.SetObjectID(&id)
addr.SetContainerID(prm.objAddr.ContainerID())
addr.SetObjectID(id)
addr.SetContainerID(cnr)
return &DeleteObjectRes{
addrTombstone: &addr,
@ -492,12 +493,12 @@ func (x GetObjectRes) Header() *object.Object {
func GetObject(prm GetObjectPrm) (*GetObjectRes, error) {
var getPrm client.PrmObjectGet
if id := prm.objAddr.ContainerID(); id != nil {
getPrm.FromContainer(*id)
if id, ok := prm.objAddr.ContainerID(); ok {
getPrm.FromContainer(id)
}
if id := prm.objAddr.ObjectID(); id != nil {
getPrm.ByID(*id)
if id, ok := prm.objAddr.ObjectID(); ok {
getPrm.ByID(id)
}
if prm.sessionToken != nil {
@ -574,12 +575,12 @@ func (x HeadObjectRes) Header() *object.Object {
func HeadObject(prm HeadObjectPrm) (*HeadObjectRes, error) {
var cliPrm client.PrmObjectHead
if id := prm.objAddr.ContainerID(); id != nil {
cliPrm.FromContainer(*id)
if id, ok := prm.objAddr.ContainerID(); ok {
cliPrm.FromContainer(id)
}
if id := prm.objAddr.ObjectID(); id != nil {
cliPrm.ByID(*id)
if id, ok := prm.objAddr.ObjectID(); ok {
cliPrm.ByID(id)
}
if prm.sessionToken != nil {
@ -739,12 +740,12 @@ func (x HashPayloadRangesRes) HashList() [][]byte {
func HashPayloadRanges(prm HashPayloadRangesPrm) (*HashPayloadRangesRes, error) {
var cliPrm client.PrmObjectHash
if id := prm.objAddr.ContainerID(); id != nil {
cliPrm.FromContainer(*id)
if id, ok := prm.objAddr.ContainerID(); ok {
cliPrm.FromContainer(id)
}
if id := prm.objAddr.ObjectID(); id != nil {
cliPrm.ByID(*id)
if id, ok := prm.objAddr.ObjectID(); ok {
cliPrm.ByID(id)
}
if prm.local {
@ -813,12 +814,12 @@ type PayloadRangeRes struct{}
func PayloadRange(prm PayloadRangePrm) (*PayloadRangeRes, error) {
var cliPrm client.PrmObjectRange
if id := prm.objAddr.ContainerID(); id != nil {
cliPrm.FromContainer(*id)
if id, ok := prm.objAddr.ContainerID(); ok {
cliPrm.FromContainer(id)
}
if id := prm.objAddr.ObjectID(); id != nil {
cliPrm.ByID(*id)
if id, ok := prm.objAddr.ObjectID(); ok {
cliPrm.ByID(id)
}
if prm.sessionToken != nil {

View file

@ -65,10 +65,10 @@ func createEACL(cmd *cobra.Command, _ []string) {
outArg, _ := cmd.Flags().GetString("out")
cidArg, _ := cmd.Flags().GetString("cid")
var containerID *cid.ID
var containerID cid.ID
if cidArg != "" {
containerID = cid.New()
if err := containerID.Parse(cidArg); err != nil {
var containerID cid.ID
if err := containerID.DecodeString(cidArg); err != nil {
cmd.PrintErrf("invalid container ID: %v\n", err)
os.Exit(1)
}

View file

@ -280,7 +280,7 @@ var listContainerObjectsCmd = &cobra.Command{
var prm internalclient.SearchObjectsPrm
sessionObjectCtxAddress := addressSDK.NewAddress()
sessionObjectCtxAddress.SetContainerID(id)
sessionObjectCtxAddress.SetContainerID(*id)
prepareSessionPrm(cmd, sessionObjectCtxAddress, &prm)
prepareObjectPrm(cmd, &prm)
prm.SetContainerID(id)
@ -413,7 +413,7 @@ Container ID in EACL table will be substituted with ID from the CLI.`,
tok, err := getSessionToken(sessionTokenPath)
exitOnErr(cmd, err)
eaclTable.SetCID(id)
eaclTable.SetCID(*id)
eaclTable.SetSessionToken(tok)
var (
@ -712,14 +712,14 @@ func parseContainerID(idStr string) (*cid.ID, error) {
return nil, errors.New("container ID is not set")
}
id := cid.New()
var id cid.ID
err := id.Parse(idStr)
err := id.DecodeString(idStr)
if err != nil {
return nil, errors.New("can't decode container ID value")
}
return id, nil
return &id, nil
}
func prettyPrintContainer(cmd *cobra.Command, cnr *container.Container, jsonEncoding bool) {

View file

@ -20,7 +20,7 @@ var cmdObjectLock = &cobra.Command{
Run: func(cmd *cobra.Command, args []string) {
var cnr cid.ID
err := cnr.Parse(args[0])
err := cnr.DecodeString(args[0])
exitOnErr(cmd, errf("Incorrect container arg: %v", err))
argsList := args[1:]
@ -28,7 +28,7 @@ var cmdObjectLock = &cobra.Command{
lockList := make([]oid.ID, len(argsList))
for i := range argsList {
err = lockList[i].Parse(argsList[i])
err = lockList[i].DecodeString(argsList[i])
exitOnErr(cmd, errf(fmt.Sprintf("Incorrect object arg #%d: %%v", i+1), err))
}
@ -42,7 +42,7 @@ var cmdObjectLock = &cobra.Command{
lock.WriteMembers(lockList)
obj := object.New()
obj.SetContainerID(&cnr)
obj.SetContainerID(cnr)
obj.SetOwnerID(idOwner)
obj.SetType(object.TypeLock)
obj.SetPayload(lock.Marshal())

View file

@ -423,7 +423,7 @@ func putObject(cmd *cobra.Command, _ []string) {
ownerID, err := getOwnerID(key)
exitOnErr(cmd, err)
cid, err := getCID(cmd)
cnr, err := getCID(cmd)
exitOnErr(cmd, err)
filename := cmd.Flag("file").Value.String()
@ -457,7 +457,7 @@ func putObject(cmd *cobra.Command, _ []string) {
}
obj := object.New()
obj.SetContainerID(cid)
obj.SetContainerID(*cnr)
obj.SetOwnerID(ownerID)
obj.SetAttributes(attrs...)
@ -471,7 +471,7 @@ func putObject(cmd *cobra.Command, _ []string) {
var prm internalclient.PutObjectPrm
sessionObjectCtxAddress := addressSDK.NewAddress()
sessionObjectCtxAddress.SetContainerID(cid)
sessionObjectCtxAddress.SetContainerID(*cnr)
prepareSessionPrmWithOwner(cmd, sessionObjectCtxAddress, key, ownerID, &prm)
prepareObjectPrm(cmd, &prm)
prm.SetHeader(obj)
@ -501,7 +501,7 @@ func putObject(cmd *cobra.Command, _ []string) {
p.Finish()
}
cmd.Printf("[%s] Object successfully stored\n", filename)
cmd.Printf(" ID: %s\n CID: %s\n", res.ID(), cid)
cmd.Printf(" ID: %s\n CID: %s\n", res.ID(), cnr)
}
func deleteObject(cmd *cobra.Command, _ []string) {
@ -520,7 +520,25 @@ func deleteObject(cmd *cobra.Command, _ []string) {
tombstoneAddr := res.TombstoneAddress()
cmd.Println("Object removed successfully.")
cmd.Printf(" ID: %s\n CID: %s\n", tombstoneAddr.ObjectID(), tombstoneAddr.ContainerID())
const strEmpty = "<empty>"
var strID, strCnr string
id, ok := tombstoneAddr.ObjectID()
if ok {
strID = id.String()
} else {
strID = strEmpty
}
cnr, ok := tombstoneAddr.ContainerID()
if ok {
strCnr = cnr.String()
} else {
strCnr = strEmpty
}
cmd.Printf(" ID: %s\n CID: %s\n", strID, strCnr)
}
func getObject(cmd *cobra.Command, _ []string) {
@ -616,7 +634,7 @@ func getObjectHeader(cmd *cobra.Command, _ []string) {
}
func searchObject(cmd *cobra.Command, _ []string) {
cid, err := getCID(cmd)
cnr, err := getCID(cmd)
exitOnErr(cmd, err)
sf, err := parseSearchFilters(cmd)
@ -625,10 +643,10 @@ func searchObject(cmd *cobra.Command, _ []string) {
var prm internalclient.SearchObjectsPrm
sessionObjectCtxAddress := addressSDK.NewAddress()
sessionObjectCtxAddress.SetContainerID(cid)
sessionObjectCtxAddress.SetContainerID(*cnr)
prepareSessionPrm(cmd, sessionObjectCtxAddress, &prm)
prepareObjectPrm(cmd, &prm)
prm.SetContainerID(cid)
prm.SetContainerID(cnr)
prm.SetFilters(sf)
res, err := internalclient.SearchObjects(prm)
@ -783,8 +801,8 @@ func parseSearchFilters(cmd *cobra.Command) (object.SearchFilters, error) {
oid, _ := cmd.Flags().GetString(searchOIDFlag)
if oid != "" {
id := oidSDK.NewID()
if err := id.Parse(oid); err != nil {
var id oidSDK.ID
if err := id.DecodeString(oid); err != nil {
return nil, fmt.Errorf("could not parse object ID: %w", err)
}
@ -869,29 +887,29 @@ func parseObjectNotifications(cmd *cobra.Command) (*object.NotificationInfo, err
}
func getCID(cmd *cobra.Command) (*cid.ID, error) {
id := cid.New()
var id cid.ID
err := id.Parse(cmd.Flag("cid").Value.String())
err := id.DecodeString(cmd.Flag("cid").Value.String())
if err != nil {
return nil, fmt.Errorf("could not parse container ID: %w", err)
}
return id, nil
return &id, nil
}
func getOID(cmd *cobra.Command) (*oidSDK.ID, error) {
oid := oidSDK.NewID()
var oid oidSDK.ID
err := oid.Parse(cmd.Flag("oid").Value.String())
err := oid.DecodeString(cmd.Flag("oid").Value.String())
if err != nil {
return nil, fmt.Errorf("could not parse object ID: %w", err)
}
return oid, nil
return &oid, nil
}
func getObjectAddress(cmd *cobra.Command) (*addressSDK.Address, error) {
cid, err := getCID(cmd)
cnr, err := getCID(cmd)
if err != nil {
return nil, err
}
@ -901,8 +919,8 @@ func getObjectAddress(cmd *cobra.Command) (*addressSDK.Address, error) {
}
objAddr := addressSDK.NewAddress()
objAddr.SetContainerID(cid)
objAddr.SetObjectID(oid)
objAddr.SetContainerID(*cnr)
objAddr.SetObjectID(*oid)
return objAddr, nil
}
@ -977,9 +995,35 @@ func printChecksum(cmd *cobra.Command, name string, recv func() (checksum.Checks
cmd.Printf("%s: %s\n", name, strVal)
}
func printObjectID(cmd *cobra.Command, recv func() (oidSDK.ID, bool)) {
var strID string
id, ok := recv()
if ok {
strID = id.String()
} else {
strID = "<empty>"
}
cmd.Printf("ID: %s\n", strID)
}
func printContainerID(cmd *cobra.Command, recv func() (cid.ID, bool)) {
var strID string
id, ok := recv()
if ok {
strID = id.String()
} else {
strID = "<empty>"
}
cmd.Printf("CID: %s\n", strID)
}
func printHeader(cmd *cobra.Command, obj *object.Object) error {
cmd.Printf("ID: %s\n", obj.ID())
cmd.Printf("CID: %s\n", obj.ContainerID())
printObjectID(cmd, obj.ID)
printContainerID(cmd, obj.ContainerID)
cmd.Printf("Owner: %s\n", obj.OwnerID())
cmd.Printf("CreatedAt: %d\n", obj.CreationEpoch())
cmd.Printf("Size: %d\n", obj.PayloadSize())
@ -1007,11 +1051,11 @@ func printSplitHeader(cmd *cobra.Command, obj *object.Object) error {
cmd.Printf("Split ID: %s\n", splitID)
}
if oid := obj.ParentID(); oid != nil {
if oid, ok := obj.ParentID(); ok {
cmd.Printf("Split ParentID: %s\n", oid)
}
if prev := obj.PreviousID(); prev != nil {
if prev, ok := obj.PreviousID(); ok {
cmd.Printf("Split PreviousID: %s\n", prev)
}
@ -1165,10 +1209,10 @@ func marshalSplitInfo(cmd *cobra.Command, info *object.SplitInfo) ([]byte, error
if splitID := info.SplitID(); splitID != nil {
b.WriteString("Split ID: " + splitID.String() + "\n")
}
if link := info.Link(); link != nil {
if link, ok := info.Link(); ok {
b.WriteString("Linking object: " + link.String() + "\n")
}
if last := info.LastPart(); last != nil {
if last, ok := info.LastPart(); ok {
b.WriteString("Last object: " + last.String() + "\n")
}
return b.Bytes(), nil

View file

@ -167,13 +167,13 @@ func putSG(cmd *cobra.Command, _ []string) {
ownerID, err := getOwnerID(key)
exitOnErr(cmd, err)
cid, err := getCID(cmd)
cnr, err := getCID(cmd)
exitOnErr(cmd, err)
members := make([]oidSDK.ID, len(sgMembers))
for i := range sgMembers {
err = members[i].Parse(sgMembers[i])
err = members[i].DecodeString(sgMembers[i])
exitOnErr(cmd, errf("could not parse object ID: %w", err))
}
@ -183,7 +183,7 @@ func putSG(cmd *cobra.Command, _ []string) {
)
sessionObjectCtxAddress := addressSDK.NewAddress()
sessionObjectCtxAddress.SetContainerID(cid)
sessionObjectCtxAddress.SetContainerID(*cnr)
prepareSessionPrmWithOwner(cmd, sessionObjectCtxAddress, key, ownerID, &putPrm)
prepareObjectPrm(cmd, &headPrm, &putPrm)
@ -194,14 +194,14 @@ func putSG(cmd *cobra.Command, _ []string) {
key: key,
ownerID: ownerID,
prm: headPrm,
}, cid, members)
}, cnr, members)
exitOnErr(cmd, errf("could not collect storage group members: %w", err))
sgContent, err := sg.Marshal()
exitOnErr(cmd, errf("could not marshal storage group: %w", err))
obj := object.New()
obj.SetContainerID(cid)
obj.SetContainerID(*cnr)
obj.SetOwnerID(ownerID)
obj.SetType(object.TypeStorageGroup)
@ -212,29 +212,29 @@ func putSG(cmd *cobra.Command, _ []string) {
exitOnErr(cmd, errf("rpc error: %w", err))
cmd.Println("Storage group successfully stored")
cmd.Printf(" ID: %s\n CID: %s\n", res.ID(), cid)
cmd.Printf(" ID: %s\n CID: %s\n", res.ID(), cnr)
}
func getSGID() (*oidSDK.ID, error) {
oid := oidSDK.NewID()
err := oid.Parse(sgID)
var oid oidSDK.ID
err := oid.DecodeString(sgID)
if err != nil {
return nil, fmt.Errorf("could not parse storage group ID: %w", err)
}
return oid, nil
return &oid, nil
}
func getSG(cmd *cobra.Command, _ []string) {
cid, err := getCID(cmd)
cnr, err := getCID(cmd)
exitOnErr(cmd, err)
id, err := getSGID()
exitOnErr(cmd, err)
addr := addressSDK.NewAddress()
addr.SetContainerID(cid)
addr.SetObjectID(id)
addr.SetContainerID(*cnr)
addr.SetObjectID(*id)
buf := bytes.NewBuffer(nil)
@ -267,16 +267,16 @@ func getSG(cmd *cobra.Command, _ []string) {
}
func listSG(cmd *cobra.Command, _ []string) {
cid, err := getCID(cmd)
cnr, err := getCID(cmd)
exitOnErr(cmd, err)
var prm internalclient.SearchObjectsPrm
sessionObjectCtxAddress := addressSDK.NewAddress()
sessionObjectCtxAddress.SetContainerID(cid)
sessionObjectCtxAddress.SetContainerID(*cnr)
prepareSessionPrm(cmd, sessionObjectCtxAddress, &prm)
prepareObjectPrm(cmd, &prm)
prm.SetContainerID(cid)
prm.SetContainerID(cnr)
prm.SetFilters(storagegroup.SearchQuery())
res, err := internalclient.SearchObjects(prm)
@ -292,15 +292,15 @@ func listSG(cmd *cobra.Command, _ []string) {
}
func delSG(cmd *cobra.Command, _ []string) {
cid, err := getCID(cmd)
cnr, err := getCID(cmd)
exitOnErr(cmd, err)
id, err := getSGID()
exitOnErr(cmd, err)
addr := addressSDK.NewAddress()
addr.SetContainerID(cid)
addr.SetObjectID(id)
addr.SetContainerID(*cnr)
addr.SetObjectID(*id)
var prm internalclient.DeleteObjectPrm
@ -313,6 +313,15 @@ func delSG(cmd *cobra.Command, _ []string) {
tombstone := res.TombstoneAddress()
var strID string
idTomb, ok := tombstone.ObjectID()
if ok {
strID = idTomb.String()
} else {
strID = "<empty>"
}
cmd.Println("Storage group removed successfully.")
cmd.Printf(" Tombstone: %s\n", tombstone.ObjectID())
cmd.Printf(" Tombstone: %s\n", strID)
}

View file

@ -7,8 +7,10 @@ import (
common "github.com/nspcc-dev/neofs-node/cmd/neofs-lens/internal"
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/blobovnicza"
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/writecache"
cid "github.com/nspcc-dev/neofs-sdk-go/container/id"
"github.com/nspcc-dev/neofs-sdk-go/object"
addressSDK "github.com/nspcc-dev/neofs-sdk-go/object/address"
oid "github.com/nspcc-dev/neofs-sdk-go/object/id"
"github.com/spf13/cobra"
)
@ -91,6 +93,32 @@ func objectInspectCmd(cmd *cobra.Command, _ []string) {
printObjectInfo(cmd, res.Object())
}
func printContainerID(cmd *cobra.Command, recv func() (cid.ID, bool)) {
var val string
id, ok := recv()
if ok {
val = id.String()
} else {
val = "<empty>"
}
cmd.Println("CID:", val)
}
func printObjectID(cmd *cobra.Command, recv func() (oid.ID, bool)) {
var val string
id, ok := recv()
if ok {
val = id.String()
} else {
val = "<empty>"
}
cmd.Println("ID:", val)
}
func printObjectInfo(cmd *cobra.Command, data []byte) {
obj := object.New()
err := obj.Unmarshal(data)
@ -99,8 +127,8 @@ func printObjectInfo(cmd *cobra.Command, data []byte) {
if vHeader {
cmd.Println("Version:", obj.Version())
cmd.Println("Type:", obj.Type())
cmd.Println("CID:", obj.ContainerID())
cmd.Println("ID:", obj.ID())
printContainerID(cmd, obj.ContainerID)
printObjectID(cmd, obj.ID)
cmd.Println("Owner:", obj.OwnerID())
cmd.Println("CreatedAt:", obj.CreationEpoch())
cmd.Println("PayloadSize:", obj.PayloadSize())

View file

@ -134,14 +134,14 @@ func newCachedContainerStorage(v container.Source) *ttlContainerStorage {
)
lruCnrCache := newNetworkTTLCache(containerCacheSize, containerCacheTTL, func(key interface{}) (interface{}, error) {
id := cid.New()
var id cid.ID
err := id.Parse(key.(string))
err := id.DecodeString(key.(string))
if err != nil {
return nil, err
}
return v.Get(id)
return v.Get(&id)
})
return (*ttlContainerStorage)(lruCnrCache)
@ -167,14 +167,14 @@ func newCachedEACLStorage(v eacl.Source) *ttlEACLStorage {
)
lruCnrCache := newNetworkTTLCache(eaclCacheSize, eaclCacheTTL, func(key interface{}) (interface{}, error) {
id := cid.New()
var id cid.ID
err := id.Parse(key.(string))
err := id.DecodeString(key.(string))
if err != nil {
return nil, err
}
return v.GetEACL(id)
return v.GetEACL(&id)
})
return (*ttlEACLStorage)(lruCnrCache)

View file

@ -4,6 +4,7 @@ import (
"bytes"
"context"
"crypto/ecdsa"
"crypto/sha256"
"errors"
"fmt"
"strconv"
@ -214,9 +215,14 @@ type morphLoadWriter struct {
}
func (w *morphLoadWriter) Put(a containerSDK.UsedSpaceAnnouncement) error {
cnr, ok := a.ContainerID()
if !ok {
return errors.New("missing container ID in load announcement")
}
w.log.Debug("save used space announcement in contract",
zap.Uint64("epoch", a.Epoch()),
zap.Stringer("cid", a.ContainerID()),
zap.Stringer("cid", cnr),
zap.Uint64("size", a.UsedSpace()),
)
@ -343,8 +349,8 @@ func (l *loadPlacementBuilder) BuildPlacement(epoch uint64, cid *cid.ID) ([]netm
return placement, nil
}
func (l *loadPlacementBuilder) buildPlacement(epoch uint64, cid *cid.ID) (netmap.ContainerNodes, *netmap.Netmap, error) {
cnr, err := l.cnrSrc.Get(cid)
func (l *loadPlacementBuilder) buildPlacement(epoch uint64, idCnr *cid.ID) (netmap.ContainerNodes, *netmap.Netmap, error) {
cnr, err := l.cnrSrc.Get(idCnr)
if err != nil {
return nil, nil, err
}
@ -354,7 +360,10 @@ func (l *loadPlacementBuilder) buildPlacement(epoch uint64, cid *cid.ID) (netmap
return nil, nil, fmt.Errorf("could not get network map: %w", err)
}
cnrNodes, err := nm.GetContainerNodes(cnr.PlacementPolicy(), cid.ToV2().GetValue())
binCnr := make([]byte, sha256.Size)
idCnr.Encode(binCnr)
cnrNodes, err := nm.GetContainerNodes(cnr.PlacementPolicy(), binCnr)
if err != nil {
return nil, nil, fmt.Errorf("could not build container nodes: %w", err)
}
@ -391,7 +400,7 @@ func (d *localStorageLoad) Iterate(f loadcontroller.UsedSpaceFilter, h loadcontr
)
a := containerSDK.NewAnnouncement()
a.SetContainerID(idList[i])
a.SetContainerID(*idList[i])
a.SetUsedSpace(sz)
if f != nil && !f(*a) {
@ -516,7 +525,12 @@ func (l *loadPlacementBuilder) isNodeFromContainerKey(epoch uint64, cid *cid.ID,
func (c *usedSpaceService) processLoadValue(_ context.Context, a containerSDK.UsedSpaceAnnouncement,
route []loadroute.ServerInfo, w loadcontroller.Writer) error {
fromCnr, err := c.loadPlacementBuilder.isNodeFromContainerKey(a.Epoch(), a.ContainerID(), route[0].PublicKey())
cnr, ok := a.ContainerID()
if !ok {
return errors.New("missing container ID in load announcement")
}
fromCnr, err := c.loadPlacementBuilder.isNodeFromContainerKey(a.Epoch(), &cnr, route[0].PublicKey())
if err != nil {
return fmt.Errorf("could not verify that the sender belongs to the container: %w", err)
} else if !fromCnr {
@ -591,7 +605,8 @@ func (m morphContainerWriter) PutEACL(table *eaclSDK.Table) error {
}
if m.cacheEnabled {
m.eacls.InvalidateEACL(table.CID())
id, _ := table.CID()
m.eacls.InvalidateEACL(&id)
}
return nil