[#1238] Adopt neofs-ir for non pointer slices in SDK

Signed-off-by: Alex Vanin <alexey@nspcc.ru>
This commit is contained in:
Alex Vanin 2022-03-15 14:39:53 +03:00 committed by Alex Vanin
parent 7f3195b197
commit 9fad29dfe0
9 changed files with 28 additions and 27 deletions

View file

@ -67,7 +67,7 @@ func (v *Validator) VerifyAndUpdate(n *netmap.NodeInfo) error {
continue continue
} }
a := netmap.NewNodeAttribute() var a netmap.NodeAttribute
a.SetKey(attrKey) a.SetKey(attrKey)
a.SetValue(attrVal) a.SetValue(attrVal)
@ -86,8 +86,8 @@ func (v *Validator) VerifyAndUpdate(n *netmap.NodeInfo) error {
return nil return nil
} }
func uniqueAttributes(as []*netmap.NodeAttribute) map[string]*netmap.NodeAttribute { func uniqueAttributes(as []netmap.NodeAttribute) map[string]netmap.NodeAttribute {
mAttr := make(map[string]*netmap.NodeAttribute, len(as)) mAttr := make(map[string]netmap.NodeAttribute, len(as))
for _, attr := range as { for _, attr := range as {
mAttr[attr.Key()] = attr mAttr[attr.Key()] = attr

View file

@ -35,7 +35,7 @@ func (x db) Get(lc *locodestd.LOCODE) (locode.Record, error) {
} }
func addAttrKV(n *netmap.NodeInfo, key, val string) { func addAttrKV(n *netmap.NodeInfo, key, val string) {
a := netmap.NewNodeAttribute() var a netmap.NodeAttribute
a.SetKey(key) a.SetKey(key)
a.SetValue(val) a.SetValue(val)

View file

@ -216,13 +216,14 @@ func (c *Calculator) sumSGSizes(ctx *singleResultCtx) bool {
addr := addressSDK.NewAddress() addr := addressSDK.NewAddress()
addr.SetContainerID(ctx.containerID()) addr.SetContainerID(ctx.containerID())
for _, sgID := range ctx.auditResult.PassSG() { passSG := ctx.auditResult.PassSG()
addr.SetObjectID(sgID) for i := range passSG {
addr.SetObjectID(&passSG[i])
sgInfo, err := c.prm.SGStorage.SGInfo(addr) sgInfo, err := c.prm.SGStorage.SGInfo(addr)
if err != nil { if err != nil {
ctx.log.Error("could not get SG info", ctx.log.Error("could not get SG info",
zap.Stringer("id", sgID), zap.Stringer("id", &passSG[i]), // stringer defined on pointer
) )
return false // we also can continue and calculate at least some part return false // we also can continue and calculate at least some part

View file

@ -160,7 +160,7 @@ func (s settlementDeps) ContainerNodes(e uint64, cid *cid.ID) ([]common.NodeInfo
for i := range ns { for i := range ns {
res = append(res, &nodeInfoWrapper{ res = append(res, &nodeInfoWrapper{
ni: ns[i], ni: &ns[i],
}) })
} }

View file

@ -26,7 +26,7 @@ type Context struct {
report *audit.Report report *audit.Report
sgMembersMtx sync.RWMutex sgMembersMtx sync.RWMutex
sgMembersCache map[int][]*oidSDK.ID sgMembersCache map[int][]oidSDK.ID
placementMtx sync.Mutex placementMtx sync.Mutex
placementCache map[string][]netmap.Nodes placementCache map[string][]netmap.Nodes
@ -158,7 +158,7 @@ func (c *Context) containerID() *cid.ID {
func (c *Context) init() { func (c *Context) init() {
c.report = audit.NewReport(c.containerID()) c.report = audit.NewReport(c.containerID())
c.sgMembersCache = make(map[int][]*oidSDK.ID) c.sgMembersCache = make(map[int][]oidSDK.ID)
c.placementCache = make(map[string][]netmap.Nodes) c.placementCache = make(map[string][]netmap.Nodes)
@ -264,7 +264,7 @@ func (c *Context) updateHeadResponses(hdr *object.Object) {
} }
} }
func (c *Context) updateSGInfo(ind int, members []*oidSDK.ID) { func (c *Context) updateSGInfo(ind int, members []oidSDK.ID) {
c.sgMembersMtx.Lock() c.sgMembersMtx.Lock()
defer c.sgMembersMtx.Unlock() defer c.sgMembersMtx.Unlock()

View file

@ -50,7 +50,7 @@ func (c *Context) processObjectPlacement(id *oidSDK.ID, nodes netmap.Nodes, repl
for i := 0; ok < replicas && i < len(nodes); i++ { for i := 0; ok < replicas && i < len(nodes); i++ {
// try to get object header from node // try to get object header from node
hdr, err := c.cnrCom.GetHeader(c.task, nodes[i], id, false) hdr, err := c.cnrCom.GetHeader(c.task, &nodes[i], id, false)
if err != nil { if err != nil {
c.log.Debug("could not get object header from candidate", c.log.Debug("could not get object header from candidate",
zap.Stringer("id", id), zap.Stringer("id", id),
@ -95,9 +95,9 @@ func (c *Context) processObjectPlacement(id *oidSDK.ID, nodes netmap.Nodes, repl
if unpairedCandidate1 >= 0 { if unpairedCandidate1 >= 0 {
if unpairedCandidate2 >= 0 { if unpairedCandidate2 >= 0 {
c.composePair(id, nodes[unpairedCandidate1], nodes[unpairedCandidate2]) c.composePair(id, &nodes[unpairedCandidate1], &nodes[unpairedCandidate2])
} else if pairedCandidate >= 0 { } else if pairedCandidate >= 0 {
c.composePair(id, nodes[unpairedCandidate1], nodes[pairedCandidate]) c.composePair(id, &nodes[unpairedCandidate1], &nodes[pairedCandidate])
} }
} }
} }
@ -143,7 +143,7 @@ func (c *Context) iterateSGMembersPlacementRand(f func(*oidSDK.ID, int, netmap.N
} }
func (c *Context) iterateSGMembersRand(f func(*oidSDK.ID) bool) { func (c *Context) iterateSGMembersRand(f func(*oidSDK.ID) bool) {
c.iterateSGInfo(func(members []*oidSDK.ID) bool { c.iterateSGInfo(func(members []oidSDK.ID) bool {
ln := len(members) ln := len(members)
processed := make(map[uint64]struct{}, ln-1) processed := make(map[uint64]struct{}, ln-1)
@ -152,7 +152,7 @@ func (c *Context) iterateSGMembersRand(f func(*oidSDK.ID) bool) {
ind := nextRandUint64(uint64(ln), processed) ind := nextRandUint64(uint64(ln), processed)
processed[ind] = struct{}{} processed[ind] = struct{}{}
if f(members[ind]) { if f(&members[ind]) {
return true return true
} }
} }
@ -161,7 +161,7 @@ func (c *Context) iterateSGMembersRand(f func(*oidSDK.ID) bool) {
}) })
} }
func (c *Context) iterateSGInfo(f func([]*oidSDK.ID) bool) { func (c *Context) iterateSGInfo(f func([]oidSDK.ID) bool) {
c.sgMembersMtx.RLock() c.sgMembersMtx.RLock()
defer c.sgMembersMtx.RUnlock() defer c.sgMembersMtx.RUnlock()
@ -169,8 +169,8 @@ func (c *Context) iterateSGInfo(f func([]*oidSDK.ID) bool) {
// but list of storage groups is already expected // but list of storage groups is already expected
// to be shuffled since it is a Search response // to be shuffled since it is a Search response
// with unpredictable order // with unpredictable order
for _, members := range c.sgMembersCache { for i := range c.sgMembersCache {
if f(members) { if f(c.sgMembersCache[i]) {
return return
} }
} }

View file

@ -56,11 +56,11 @@ func (c *Context) checkStorageGroupPoR(ind int, sg *oidSDK.ID) {
) )
for i := range members { for i := range members {
objectPlacement, err := c.buildPlacement(members[i]) objectPlacement, err := c.buildPlacement(&members[i])
if err != nil { if err != nil {
c.log.Info("can't build placement for storage group member", c.log.Info("can't build placement for storage group member",
zap.Stringer("sg", sg), zap.Stringer("sg", sg),
zap.Stringer("member_id", members[i]), zap.Stringer("member_id", &members[i]), // stringer defined on pointer
) )
continue continue
@ -78,11 +78,11 @@ func (c *Context) checkStorageGroupPoR(ind int, sg *oidSDK.ID) {
accRetries++ accRetries++
} }
hdr, err := c.cnrCom.GetHeader(c.task, flat[j], members[i], true) hdr, err := c.cnrCom.GetHeader(c.task, &flat[j], &members[i], true)
if err != nil { if err != nil {
c.log.Debug("can't head object", c.log.Debug("can't head object",
zap.String("remote_node", hex.EncodeToString(flat[j].PublicKey())), zap.String("remote_node", hex.EncodeToString(flat[j].PublicKey())),
zap.Stringer("oid", members[i])) zap.Stringer("oid", &members[i])) // stringer defined on pointer
continue continue
} }
@ -99,7 +99,7 @@ func (c *Context) checkStorageGroupPoR(ind int, sg *oidSDK.ID) {
}) })
if err != nil { if err != nil {
c.log.Debug("can't concatenate tz hash", c.log.Debug("can't concatenate tz hash",
zap.Stringer("oid", members[i]), zap.Stringer("oid", &members[i]), // stringer defined on pointer
zap.String("error", err.Error())) zap.String("error", err.Error()))
break break

View file

@ -52,7 +52,7 @@ func (r *Report) PassedPoR(sg *oidSDK.ID) {
r.mu.Lock() r.mu.Lock()
defer r.mu.Unlock() defer r.mu.Unlock()
r.res.SetPassSG(append(r.res.PassSG(), sg)) r.res.SetPassSG(append(r.res.PassSG(), *sg))
} }
// FailedPoR updates list of failed storage groups. // FailedPoR updates list of failed storage groups.
@ -60,7 +60,7 @@ func (r *Report) FailedPoR(sg *oidSDK.ID) {
r.mu.Lock() r.mu.Lock()
defer r.mu.Unlock() defer r.mu.Unlock()
r.res.SetFailSG(append(r.res.FailSG(), sg)) r.res.SetFailSG(append(r.res.FailSG(), *sg))
} }
// SetPlacementCounters sets counters of compliance with placement. // SetPlacementCounters sets counters of compliance with placement.

View file

@ -64,7 +64,7 @@ func (mb *managerBuilder) BuildManagers(epoch uint64, p reputation.PeerID) ([]Se
} }
// make a copy to keep order consistency of the origin netmap after sorting // make a copy to keep order consistency of the origin netmap after sorting
nodes := make([]*apiNetmap.Node, len(nm.Nodes)) nodes := make([]apiNetmap.Node, len(nm.Nodes))
copy(nodes, nm.Nodes) copy(nodes, nm.Nodes)