Skip to content

Commit 49b8282

Browse files
committed
sn: Refactor method return to struct
Signed-off-by: Leonard Lyubich <[email protected]>
1 parent 2dcf4a0 commit 49b8282

File tree

3 files changed

+38
-38
lines changed

3 files changed

+38
-38
lines changed

cmd/neofs-node/object.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -703,8 +703,8 @@ func (c *cfg) IsLocalNodePublicKey(b []byte) bool { return c.IsLocalKey(b) }
703703
//
704704
// GetNodesForObject implements [getsvc.NeoFSNetwork], [policer.Network].
705705
func (c *cfg) GetNodesForObject(addr oid.Address) ([][]netmapsdk.NodeInfo, []uint, []iec.Rule, error) {
706-
nodeSets, repRules, ecRules, err := c.cfgObject.containerNodes.getNodesForObject(addr)
707-
return nodeSets, repRules, ecRules, err
706+
res := c.cfgObject.containerNodes.getNodesForObject(addr)
707+
return res.nodeSets, res.repCounts, res.ecRules, res.err
708708
}
709709

710710
type netmapSourceWithNodes struct {

cmd/neofs-node/policy.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -154,24 +154,24 @@ func (x *containerNodes) forEachContainerNode(cnrID cid.ID, withPrevEpoch bool,
154154
// the underlying storage, applies the storage policy to it and returns sorted
155155
// lists of selected storage nodes along with the per-list numbers of primary
156156
// object holders. Resulting slices must not be changed.
157-
func (x *containerNodes) getNodesForObject(addr oid.Address) ([][]netmapsdk.NodeInfo, []uint, []iec.Rule, error) {
157+
func (x *containerNodes) getNodesForObject(addr oid.Address) storagePolicyRes {
158158
curEpoch, err := x.network.Epoch()
159159
if err != nil {
160-
return nil, nil, nil, fmt.Errorf("read current NeoFS epoch: %w", err)
160+
return storagePolicyRes{err: fmt.Errorf("read current NeoFS epoch: %w", err)}
161161
}
162162
cacheKey := objectNodesCacheKey{curEpoch, addr}
163163
res, ok := x.objCache.Get(cacheKey)
164164
if ok {
165-
return res.nodeSets, res.repCounts, res.ecRules, res.err
165+
return res
166166
}
167167
cnrRes, networkMap, err := x.getForCurrentEpoch(curEpoch, addr.Container())
168168
if err != nil {
169-
return nil, nil, nil, err
169+
return storagePolicyRes{err: err}
170170
}
171171
if networkMap == nil {
172172
if networkMap, err = x.network.GetNetMapByEpoch(curEpoch); err != nil {
173173
// non-persistent error => do not cache
174-
return nil, nil, nil, fmt.Errorf("read network map by epoch: %w", err)
174+
return storagePolicyRes{err: fmt.Errorf("read network map by epoch: %w", err)}
175175
}
176176
}
177177
res.repCounts = cnrRes.repCounts
@@ -181,7 +181,7 @@ func (x *containerNodes) getNodesForObject(addr oid.Address) ([][]netmapsdk.Node
181181
res.err = fmt.Errorf("sort container nodes for object: %w", res.err)
182182
}
183183
x.objCache.Add(cacheKey, res)
184-
return res.nodeSets, res.repCounts, res.ecRules, res.err
184+
return res
185185
}
186186

187187
func (x *containerNodes) getForCurrentEpoch(curEpoch uint64, cnr cid.ID) (storagePolicyRes, *netmapsdk.NetMap, error) {

cmd/neofs-node/policy_test.go

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -520,9 +520,9 @@ func TestContainerNodes_GetNodesForObject(t *testing.T) {
520520
require.NoError(t, err)
521521

522522
for n := 1; n < 10; n++ {
523-
_, _, _, err = ns.getNodesForObject(anyAddr)
524-
require.ErrorIs(t, err, epochErr)
525-
require.EqualError(t, err, "read current NeoFS epoch: any epoch error")
523+
res := ns.getNodesForObject(anyAddr)
524+
require.ErrorIs(t, res.err, epochErr)
525+
require.EqualError(t, res.err, "read current NeoFS epoch: any epoch error")
526526
// such error must not be cached
527527
network.assertEpochCallCount(t, n)
528528
}
@@ -534,9 +534,9 @@ func TestContainerNodes_GetNodesForObject(t *testing.T) {
534534
require.NoError(t, err)
535535

536536
for n := 1; n < 10; n++ {
537-
_, _, _, err = ns.getNodesForObject(anyAddr)
538-
require.ErrorIs(t, err, cnrErr)
539-
require.EqualError(t, err, "select container nodes for current epoch #42: read container by ID: any container error")
537+
res := ns.getNodesForObject(anyAddr)
538+
require.ErrorIs(t, res.err, cnrErr)
539+
require.EqualError(t, res.err, "select container nodes for current epoch #42: read container by ID: any container error")
540540
// such error must not be cached
541541
cnrs.assertCalledNTimesWith(t, n, anyAddr.Container())
542542
}
@@ -548,9 +548,9 @@ func TestContainerNodes_GetNodesForObject(t *testing.T) {
548548
require.NoError(t, err)
549549

550550
for n := 1; n <= 10; n++ {
551-
_, _, _, err = ns.getNodesForObject(anyAddr)
552-
require.ErrorIs(t, err, curNetmapErr)
553-
require.EqualError(t, err, "select container nodes for current epoch #42: read network map by epoch: any current netmap error")
551+
res := ns.getNodesForObject(anyAddr)
552+
require.ErrorIs(t, res.err, curNetmapErr)
553+
require.EqualError(t, res.err, "select container nodes for current epoch #42: read network map by epoch: any current netmap error")
554554
network.assertEpochCallCount(t, n)
555555
// such error must not be cached
556556
network.assertNetmapCalledNTimes(t, n, network.epoch)
@@ -569,8 +569,8 @@ func TestContainerNodes_GetNodesForObject(t *testing.T) {
569569
require.NoError(t, err)
570570

571571
for n := 1; n <= 10; n++ {
572-
_, _, _, err = ns.getNodesForObject(anyAddr)
573-
require.EqualError(t, err, fmt.Sprintf("select container nodes for current epoch #42: %v", policyErr))
572+
res := ns.getNodesForObject(anyAddr)
573+
require.EqualError(t, res.err, fmt.Sprintf("select container nodes for current epoch #42: %v", policyErr))
574574
network.assertEpochCallCount(t, n)
575575
// assert results are cached
576576
cnrs.assertCalledNTimesWith(t, 1, anyAddr.Container())
@@ -592,8 +592,8 @@ func TestContainerNodes_GetNodesForObject(t *testing.T) {
592592
}
593593

594594
for n := 1; n <= 10; n++ {
595-
_, _, _, err = ns.getNodesForObject(anyAddr)
596-
require.EqualError(t, err, "select container nodes for current epoch #42: "+
595+
res := ns.getNodesForObject(anyAddr)
596+
require.EqualError(t, res.err, "select container nodes for current epoch #42: "+
597597
"invalid result of container's storage policy application to the network map: "+
598598
"diff number of storage node sets (4) and required replica descriptors (2)")
599599
network.assertEpochCallCount(t, n)
@@ -622,8 +622,8 @@ func TestContainerNodes_GetNodesForObject(t *testing.T) {
622622
}
623623

624624
for n := 1; n <= 10; n++ {
625-
_, _, _, err = ns.getNodesForObject(anyAddr)
626-
require.EqualError(t, err, "select container nodes for current epoch #42: "+
625+
res := ns.getNodesForObject(anyAddr)
626+
require.EqualError(t, res.err, "select container nodes for current epoch #42: "+
627627
"invalid result of container's storage policy application to the network map: "+
628628
"invalid storage node set #1: number of nodes (1) is less than minimum required by the container policy (2)")
629629
network.assertEpochCallCount(t, n)
@@ -647,8 +647,8 @@ func TestContainerNodes_GetNodesForObject(t *testing.T) {
647647
}
648648

649649
for n := 1; n <= 10; n++ {
650-
_, _, _, err = ns.getNodesForObject(anyAddr)
651-
require.EqualError(t, err, "select container nodes for current epoch #42: "+
650+
res := ns.getNodesForObject(anyAddr)
651+
require.EqualError(t, res.err, "select container nodes for current epoch #42: "+
652652
"invalid result of container's storage policy application to the network map: "+
653653
"diff number of storage node sets (4) and required replica descriptors (2)")
654654
network.assertEpochCallCount(t, n)
@@ -677,8 +677,8 @@ func TestContainerNodes_GetNodesForObject(t *testing.T) {
677677
}
678678

679679
for n := 1; n <= 10; n++ {
680-
_, _, _, err = ns.getNodesForObject(anyAddr)
681-
require.EqualError(t, err, "sort container nodes for object: any sort error")
680+
res := ns.getNodesForObject(anyAddr)
681+
require.EqualError(t, res.err, "sort container nodes for object: any sort error")
682682
network.assertEpochCallCount(t, n)
683683
// assert results are cached
684684
cnrs.assertCalledNTimesWith(t, 1, anyAddr.Container())
@@ -700,18 +700,18 @@ func TestContainerNodes_GetNodesForObject(t *testing.T) {
700700
require.NoError(t, err)
701701

702702
for n := 1; n <= 10; n++ {
703-
nodeLists, primCounts, _, err := ns.getNodesForObject(anyAddr)
703+
res := ns.getNodesForObject(anyAddr)
704704
require.NoError(t, err)
705-
require.Len(t, primCounts, 4)
706-
require.Len(t, nodeLists, 4)
707-
require.EqualValues(t, 2, primCounts[0])
708-
require.ElementsMatch(t, []netmap.NodeInfo{nodes[1], nodes[3]}, nodeLists[0])
709-
require.EqualValues(t, 3, primCounts[1])
710-
require.ElementsMatch(t, []netmap.NodeInfo{nodes[2], nodes[4], nodes[6]}, nodeLists[1])
711-
require.EqualValues(t, 1, primCounts[2])
712-
require.ElementsMatch(t, []netmap.NodeInfo{nodes[5]}, nodeLists[2])
713-
require.EqualValues(t, 5, primCounts[3])
714-
require.ElementsMatch(t, []netmap.NodeInfo{nodes[0], nodes[1], nodes[7], nodes[8], nodes[9]}, nodeLists[3])
705+
require.Len(t, res.repCounts, 4)
706+
require.Len(t, res.nodeSets, 4)
707+
require.EqualValues(t, 2, res.repCounts[0])
708+
require.ElementsMatch(t, []netmap.NodeInfo{nodes[1], nodes[3]}, res.nodeSets[0])
709+
require.EqualValues(t, 3, res.repCounts[1])
710+
require.ElementsMatch(t, []netmap.NodeInfo{nodes[2], nodes[4], nodes[6]}, res.nodeSets[1])
711+
require.EqualValues(t, 1, res.repCounts[2])
712+
require.ElementsMatch(t, []netmap.NodeInfo{nodes[5]}, res.nodeSets[2])
713+
require.EqualValues(t, 5, res.repCounts[3])
714+
require.ElementsMatch(t, []netmap.NodeInfo{nodes[0], nodes[1], nodes[7], nodes[8], nodes[9]}, res.nodeSets[3])
715715
cnrs.assertCalledNTimesWith(t, 1, anyAddr.Container())
716716
require.Len(t, network.callsNetmap, 1)
717717
require.EqualValues(t, network.epoch, network.callsNetmap[0])

0 commit comments

Comments
 (0)