satellite/nodeselection: rename (NodeFilter).MatchInclude to Match

As I learned, the `Include` supposed to communicate that some internal change also "included" to the filters during the check -> filters might be stateful.

But it's not the case any more after 552242387, where we removed the only one stateful filter.

Change-Id: I7c36ddadb2defbfa3b6b67bcc115e4427ba9e083
This commit is contained in:
Márton Elek 2023-08-28 09:42:08 +02:00
parent dcc4bd0d10
commit c202929413
No known key found for this signature in database
9 changed files with 75 additions and 75 deletions

View File

@ -12,7 +12,7 @@ import (
// NodeFilter can decide if a Node should be part of the selection or not.
type NodeFilter interface {
MatchInclude(node *SelectedNode) bool
Match(node *SelectedNode) bool
}
// NodeFilterWithAnnotation is a NodeFilter with additional annotations.
@ -27,8 +27,8 @@ type Annotation struct {
Value string
}
// MatchInclude implements NodeFilter.
func (a Annotation) MatchInclude(node *SelectedNode) bool {
// Match implements NodeFilter.
func (a Annotation) Match(node *SelectedNode) bool {
return true
}
@ -61,9 +61,9 @@ func (a AnnotatedNodeFilter) GetAnnotation(name string) string {
return ""
}
// MatchInclude implements NodeFilter.
func (a AnnotatedNodeFilter) MatchInclude(node *SelectedNode) bool {
return a.Filter.MatchInclude(node)
// Match implements NodeFilter.
func (a AnnotatedNodeFilter) Match(node *SelectedNode) bool {
return a.Filter.Match(node)
}
// WithAnnotation adds annotations to a NodeFilter.
@ -95,21 +95,21 @@ type NodeFilters []NodeFilter
// NodeFilterFunc is helper to use func as NodeFilter.
type NodeFilterFunc func(node *SelectedNode) bool
// MatchInclude implements NodeFilter interface.
func (n NodeFilterFunc) MatchInclude(node *SelectedNode) bool {
// Match implements NodeFilter interface.
func (n NodeFilterFunc) Match(node *SelectedNode) bool {
return n(node)
}
// ExcludeAllFilter will never select any node.
type ExcludeAllFilter struct{}
// MatchInclude implements NodeFilter interface.
func (ExcludeAllFilter) MatchInclude(node *SelectedNode) bool { return false }
// Match implements NodeFilter interface.
func (ExcludeAllFilter) Match(node *SelectedNode) bool { return false }
// MatchInclude implements NodeFilter interface.
func (n NodeFilters) MatchInclude(node *SelectedNode) bool {
// Match implements NodeFilter interface.
func (n NodeFilters) Match(node *SelectedNode) bool {
for _, filter := range n {
if !filter.MatchInclude(node) {
if !filter.Match(node) {
return false
}
}
@ -153,8 +153,8 @@ func NewCountryFilter(permit location.Set) NodeFilter {
}
}
// MatchInclude implements NodeFilter interface.
func (p *CountryFilter) MatchInclude(node *SelectedNode) bool {
// Match implements NodeFilter interface.
func (p *CountryFilter) Match(node *SelectedNode) bool {
return p.permit.Contains(node.CountryCode)
}
@ -163,8 +163,8 @@ var _ NodeFilter = &CountryFilter{}
// ExcludedNetworks will exclude nodes with specified networks.
type ExcludedNetworks []string
// MatchInclude implements NodeFilter interface.
func (e ExcludedNetworks) MatchInclude(node *SelectedNode) bool {
// Match implements NodeFilter interface.
func (e ExcludedNetworks) Match(node *SelectedNode) bool {
for _, id := range e {
if id == node.LastNet {
return false
@ -178,8 +178,8 @@ var _ NodeFilter = ExcludedNetworks{}
// ExcludedNodeNetworks exclude nodes which has same net as the one of the specified.
type ExcludedNodeNetworks []*SelectedNode
// MatchInclude implements NodeFilter interface.
func (e ExcludedNodeNetworks) MatchInclude(node *SelectedNode) bool {
// Match implements NodeFilter interface.
func (e ExcludedNodeNetworks) Match(node *SelectedNode) bool {
for _, n := range e {
if node.LastNet == n.LastNet {
return false
@ -193,8 +193,8 @@ var _ NodeFilter = ExcludedNodeNetworks{}
// ExcludedIDs can blacklist NodeIDs.
type ExcludedIDs []storj.NodeID
// MatchInclude implements NodeFilter interface.
func (e ExcludedIDs) MatchInclude(node *SelectedNode) bool {
// Match implements NodeFilter interface.
func (e ExcludedIDs) Match(node *SelectedNode) bool {
for _, id := range e {
if id == node.ID {
return false
@ -221,8 +221,8 @@ func NewTagFilter(id storj.NodeID, name string, value []byte) TagFilter {
}
}
// MatchInclude implements NodeFilter interface.
func (t TagFilter) MatchInclude(node *SelectedNode) bool {
// Match implements NodeFilter interface.
func (t TagFilter) Match(node *SelectedNode) bool {
for _, tag := range node.Tags {
if tag.Name == t.name && bytes.Equal(tag.Value, t.value) && tag.Signer == t.signer {
return true
@ -238,9 +238,9 @@ type ExcludeFilter struct {
matchToExclude NodeFilter
}
// MatchInclude implements NodeFilter interface.
func (e ExcludeFilter) MatchInclude(node *SelectedNode) bool {
return !e.matchToExclude.MatchInclude(node)
// Match implements NodeFilter interface.
func (e ExcludeFilter) Match(node *SelectedNode) bool {
return !e.matchToExclude.Match(node)
}
// NewExcludeFilter creates filter, nodes matching the given filter will be excluded.
@ -255,8 +255,8 @@ var _ NodeFilter = ExcludeFilter{}
// AnyFilter matches all the nodes.
type AnyFilter struct{}
// MatchInclude implements NodeFilter interface.
func (a AnyFilter) MatchInclude(node *SelectedNode) bool {
// Match implements NodeFilter interface.
func (a AnyFilter) Match(node *SelectedNode) bool {
return true
}

View File

@ -23,11 +23,11 @@ func TestCriteria_ExcludeNodeID(t *testing.T) {
criteria := NodeFilters{}.WithExcludedIDs([]storj.NodeID{excluded})
assert.False(t, criteria.MatchInclude(&SelectedNode{
assert.False(t, criteria.Match(&SelectedNode{
ID: excluded,
}))
assert.True(t, criteria.MatchInclude(&SelectedNode{
assert.True(t, criteria.Match(&SelectedNode{
ID: included,
}))
}
@ -42,15 +42,15 @@ func TestCriteria_ExcludedNodeNetworks(t *testing.T) {
},
})
assert.False(t, criteria.MatchInclude(&SelectedNode{
assert.False(t, criteria.Match(&SelectedNode{
LastNet: "192.168.1.0",
}))
assert.False(t, criteria.MatchInclude(&SelectedNode{
assert.False(t, criteria.Match(&SelectedNode{
LastNet: "192.168.2.0",
}))
assert.True(t, criteria.MatchInclude(&SelectedNode{
assert.True(t, criteria.Match(&SelectedNode{
LastNet: "192.168.3.0",
}))
}
@ -113,7 +113,7 @@ func TestCriteria_Geofencing(t *testing.T) {
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
assert.Equal(t, c.expected, c.criteria.MatchInclude(&SelectedNode{
assert.Equal(t, c.expected, c.criteria.Match(&SelectedNode{
CountryCode: c.country,
}))
})
@ -146,7 +146,7 @@ func benchmarkFilter(b *testing.B, filters NodeFilters) {
c := 0
for j := 0; j < b.N; j++ {
for n := 0; n < len(nodes); n++ {
if filters.MatchInclude(nodes[n]) {
if filters.Match(nodes[n]) {
c++
}
}

View File

@ -25,7 +25,7 @@ func (nodes SelectByID) Select(n int, nodeFilter NodeFilter) []*SelectedNode {
for _, idx := range mathrand.Perm(len(nodes)) {
node := nodes[idx]
if !nodeFilter.MatchInclude(node) {
if !nodeFilter.Match(node) {
continue
}
@ -83,7 +83,7 @@ func (subnets SelectBySubnet) Select(n int, filter NodeFilter) []*SelectedNode {
rs := NewRandomOrder(len(subnet.Nodes))
for rs.Next() {
if filter.MatchInclude(subnet.Nodes[rs.At()]) {
if filter.Match(subnet.Nodes[rs.At()]) {
selected = append(selected, subnet.Nodes[rs.At()].Clone())
break
}

View File

@ -149,7 +149,7 @@ func (service *Service) CreateGetOrderLimits(ctx context.Context, bucket metabas
filter := service.placementRules(segment.Placement)
for id, node := range nodes {
if !filter.MatchInclude(node) {
if !filter.Match(node) {
delete(nodes, id)
}
}

View File

@ -147,7 +147,7 @@ func (state *DownloadSelectionCacheState) IPs(nodes []storj.NodeID) map[storj.No
func (state *DownloadSelectionCacheState) FilteredIPs(nodes []storj.NodeID, filter nodeselection.NodeFilter) map[storj.NodeID]string {
xs := make(map[storj.NodeID]string, len(nodes))
for _, nodeID := range nodes {
if n, exists := state.byID[nodeID]; exists && filter.MatchInclude(n) {
if n, exists := state.byID[nodeID]; exists && filter.Match(n) {
xs[nodeID] = n.LastIPPort
}
}

View File

@ -33,12 +33,12 @@ func TestPlacementFromString(t *testing.T) {
filters := p.placements[storj.PlacementConstraint(11)]
require.NotNil(t, filters)
for _, code := range shouldBeExcluded {
require.False(t, filters.MatchInclude(&nodeselection.SelectedNode{
require.False(t, filters.Match(&nodeselection.SelectedNode{
CountryCode: code,
}), "%s shouldn't be included in placement %s", code, placementDef)
}
for _, code := range shouldBeIncluded {
require.True(t, filters.MatchInclude(&nodeselection.SelectedNode{
require.True(t, filters.Match(&nodeselection.SelectedNode{
CountryCode: code,
}), "%s is not included in placement %s", code, placementDef)
}
@ -57,7 +57,7 @@ func TestPlacementFromString(t *testing.T) {
require.NoError(t, err)
filters := p.placements[storj.PlacementConstraint(11)]
require.NotNil(t, filters)
require.True(t, filters.MatchInclude(&nodeselection.SelectedNode{
require.True(t, filters.Match(&nodeselection.SelectedNode{
Tags: nodeselection.NodeTags{
{
Signer: signer,
@ -66,7 +66,7 @@ func TestPlacementFromString(t *testing.T) {
},
},
}))
require.False(t, filters.MatchInclude(&nodeselection.SelectedNode{
require.False(t, filters.Match(&nodeselection.SelectedNode{
CountryCode: location.Germany,
}))
})
@ -76,7 +76,7 @@ func TestPlacementFromString(t *testing.T) {
err := p.AddPlacementFromString(`1:tag("12whfK1EDvHJtajBiAUeajQLYcWqxcQmdYQU5zX5cCf6bAxfgu4","foo","bar");2:exclude(placement(1))`)
require.NoError(t, err)
require.True(t, p.placements[storj.PlacementConstraint(1)].MatchInclude(&nodeselection.SelectedNode{
require.True(t, p.placements[storj.PlacementConstraint(1)].Match(&nodeselection.SelectedNode{
Tags: nodeselection.NodeTags{
{
Signer: signer,
@ -87,7 +87,7 @@ func TestPlacementFromString(t *testing.T) {
}))
placement2 := p.placements[storj.PlacementConstraint(2)]
require.False(t, placement2.MatchInclude(&nodeselection.SelectedNode{
require.False(t, placement2.Match(&nodeselection.SelectedNode{
Tags: nodeselection.NodeTags{
{
Signer: signer,
@ -96,7 +96,7 @@ func TestPlacementFromString(t *testing.T) {
},
},
}))
require.True(t, placement2.MatchInclude(&nodeselection.SelectedNode{
require.True(t, placement2.Match(&nodeselection.SelectedNode{
CountryCode: location.Germany,
}))
@ -112,7 +112,7 @@ func TestPlacementFromString(t *testing.T) {
require.NoError(t, err)
filters := p.placements[storj.PlacementConstraint(11)]
require.NotNil(t, filters)
require.True(t, filters.MatchInclude(&nodeselection.SelectedNode{
require.True(t, filters.Match(&nodeselection.SelectedNode{
CountryCode: location.UnitedKingdom,
Tags: nodeselection.NodeTags{
{
@ -122,10 +122,10 @@ func TestPlacementFromString(t *testing.T) {
},
},
}))
require.False(t, filters.MatchInclude(&nodeselection.SelectedNode{
require.False(t, filters.Match(&nodeselection.SelectedNode{
CountryCode: location.UnitedKingdom,
}))
require.False(t, filters.MatchInclude(&nodeselection.SelectedNode{
require.False(t, filters.Match(&nodeselection.SelectedNode{
CountryCode: location.Germany,
Tags: nodeselection.NodeTags{
{
@ -150,19 +150,19 @@ func TestPlacementFromString(t *testing.T) {
filters := p.placements[storj.PlacementConstraint(11)]
require.NotNil(t, filters)
require.True(t, filters.MatchInclude(&nodeselection.SelectedNode{
require.True(t, filters.Match(&nodeselection.SelectedNode{
CountryCode: location.UnitedKingdom,
}))
require.False(t, filters.MatchInclude(&nodeselection.SelectedNode{
require.False(t, filters.Match(&nodeselection.SelectedNode{
CountryCode: location.Germany,
}))
filters = p.placements[storj.PlacementConstraint(12)]
require.NotNil(t, filters)
require.False(t, filters.MatchInclude(&nodeselection.SelectedNode{
require.False(t, filters.Match(&nodeselection.SelectedNode{
CountryCode: location.UnitedKingdom,
}))
require.True(t, filters.MatchInclude(&nodeselection.SelectedNode{
require.True(t, filters.Match(&nodeselection.SelectedNode{
CountryCode: location.Germany,
}))
@ -175,7 +175,7 @@ func TestPlacementFromString(t *testing.T) {
err := p.AddPlacementFromString(`11:annotated(country("GB"),annotation("autoExcludeSubnet","off"))`)
require.NoError(t, err)
filters := p.placements[storj.PlacementConstraint(11)]
require.True(t, filters.MatchInclude(&nodeselection.SelectedNode{
require.True(t, filters.Match(&nodeselection.SelectedNode{
CountryCode: location.UnitedKingdom,
}))
@ -188,7 +188,7 @@ func TestPlacementFromString(t *testing.T) {
require.NoError(t, err)
filters := p.placements[storj.PlacementConstraint(11)]
require.True(t, filters.MatchInclude(&nodeselection.SelectedNode{
require.True(t, filters.Match(&nodeselection.SelectedNode{
CountryCode: location.UnitedKingdom,
}))
require.Equal(t, "bar", nodeselection.GetAnnotation(filters, "foo"))
@ -201,7 +201,7 @@ func TestPlacementFromString(t *testing.T) {
err := p.AddPlacementFromString(`11:annotated(annotated(country("GB"),annotation("foo","bar")),annotation("bar","foo"))`)
require.NoError(t, err)
filters := p.placements[storj.PlacementConstraint(11)]
require.True(t, filters.MatchInclude(&nodeselection.SelectedNode{
require.True(t, filters.Match(&nodeselection.SelectedNode{
CountryCode: location.UnitedKingdom,
}))
@ -214,7 +214,7 @@ func TestPlacementFromString(t *testing.T) {
s := fmt.Sprintf(`11:annotated(annotated(country("GB"),annotation("%s","test-location")),annotation("%s","%s"))`, nodeselection.Location, nodeselection.AutoExcludeSubnet, nodeselection.AutoExcludeSubnetOFF)
require.NoError(t, p.AddPlacementFromString(s))
filters := p.placements[storj.PlacementConstraint(11)]
require.True(t, filters.MatchInclude(&nodeselection.SelectedNode{
require.True(t, filters.Match(&nodeselection.SelectedNode{
CountryCode: location.UnitedKingdom,
}))
@ -228,10 +228,10 @@ func TestPlacementFromString(t *testing.T) {
err := p.AddPlacementFromString(`11:exclude(country("GB"))`)
require.NoError(t, err)
filters := p.placements[storj.PlacementConstraint(11)]
require.False(t, filters.MatchInclude(&nodeselection.SelectedNode{
require.False(t, filters.Match(&nodeselection.SelectedNode{
CountryCode: location.UnitedKingdom,
}))
require.True(t, filters.MatchInclude(&nodeselection.SelectedNode{
require.True(t, filters.Match(&nodeselection.SelectedNode{
CountryCode: location.Germany,
}))
})
@ -242,25 +242,25 @@ func TestPlacementFromString(t *testing.T) {
t.Run("nr", func(t *testing.T) {
nr := p.placements[storj.NR]
require.True(t, nr.MatchInclude(&nodeselection.SelectedNode{
require.True(t, nr.Match(&nodeselection.SelectedNode{
CountryCode: location.UnitedKingdom,
}))
require.False(t, nr.MatchInclude(&nodeselection.SelectedNode{
require.False(t, nr.Match(&nodeselection.SelectedNode{
CountryCode: location.Russia,
}))
require.False(t, nr.MatchInclude(&nodeselection.SelectedNode{
require.False(t, nr.Match(&nodeselection.SelectedNode{
CountryCode: 0,
}))
})
t.Run("us", func(t *testing.T) {
us := p.placements[storj.US]
require.True(t, us.MatchInclude(&nodeselection.SelectedNode{
require.True(t, us.Match(&nodeselection.SelectedNode{
CountryCode: location.UnitedStates,
}))
require.False(t, us.MatchInclude(&nodeselection.SelectedNode{
require.False(t, us.Match(&nodeselection.SelectedNode{
CountryCode: location.Germany,
}))
require.False(t, us.MatchInclude(&nodeselection.SelectedNode{
require.False(t, us.Match(&nodeselection.SelectedNode{
CountryCode: 0,
}))
})
@ -305,10 +305,10 @@ func TestPlacementFromString(t *testing.T) {
filter2 := rules2.CreateFilters(placement)
for _, country := range testCountries {
old := placement.AllowedCountry(country)
result1 := filter1.MatchInclude(&nodeselection.SelectedNode{
result1 := filter1.Match(&nodeselection.SelectedNode{
CountryCode: country,
})
result2 := filter2.MatchInclude(&nodeselection.SelectedNode{
result2 := filter2.Match(&nodeselection.SelectedNode{
CountryCode: country,
})
assert.Equal(t, old, result1, "old placement doesn't match string based configuration for placement %d and country %s", placement, country)
@ -317,8 +317,8 @@ func TestPlacementFromString(t *testing.T) {
}
// make sure that new rules exclude location.None from NR
assert.False(t, rules1.CreateFilters(storj.NR).MatchInclude(&nodeselection.SelectedNode{}))
assert.False(t, rules2.CreateFilters(storj.NR).MatchInclude(&nodeselection.SelectedNode{}))
assert.False(t, rules1.CreateFilters(storj.NR).Match(&nodeselection.SelectedNode{}))
assert.False(t, rules2.CreateFilters(storj.NR).Match(&nodeselection.SelectedNode{}))
// make sure tagged nodes (even from EU) matches only the special placement
node := &nodeselection.SelectedNode{
@ -333,9 +333,9 @@ func TestPlacementFromString(t *testing.T) {
}
for _, placement := range []storj.PlacementConstraint{storj.EveryCountry, storj.EU, storj.EEA, storj.DE, storj.US, storj.NR} {
assert.False(t, rules1.CreateFilters(placement).MatchInclude(node))
assert.False(t, rules1.CreateFilters(placement).Match(node))
}
assert.False(t, rules1.CreateFilters(6).MatchInclude(node))
assert.False(t, rules1.CreateFilters(6).Match(node))
// check if annotation present on 11,12, but not on other
for i := 0; i < 20; i++ {

View File

@ -109,7 +109,7 @@ func (cache *ReliabilityCache) OutOfPlacementPieces(ctx context.Context, created
var outOfPlacementPieces metabase.Pieces
nodeFilters := cache.placementRules(placement)
for _, p := range pieces {
if node, ok := state.reliableAll[p.StorageNode]; ok && !nodeFilters.MatchInclude(&node) {
if node, ok := state.reliableAll[p.StorageNode]; ok && !nodeFilters.Match(&node) {
outOfPlacementPieces = append(outOfPlacementPieces, p)
}
}

View File

@ -694,7 +694,7 @@ func (repairer *SegmentRepairer) classifySegmentPiecesWithNodes(ctx context.Cont
for _, onlineNode := range online {
// count online nodes in excluded countries only if country is not excluded by segment
// placement, those nodes will be counted with out of placement check
if _, excluded := repairer.excludedCountryCodes[onlineNode.CountryCode]; excluded && nodeFilters.MatchInclude(&onlineNode) {
if _, excluded := repairer.excludedCountryCodes[onlineNode.CountryCode]; excluded && nodeFilters.Match(&onlineNode) {
result.NumHealthyInExcludedCountries++
}
@ -736,7 +736,7 @@ func (repairer *SegmentRepairer) classifySegmentPiecesWithNodes(ctx context.Cont
if repairer.doPlacementCheck {
checkPlacement := func(reliable []nodeselection.SelectedNode) {
for _, node := range reliable {
if nodeFilters.MatchInclude(&node) {
if nodeFilters.Match(&node) {
continue
}

View File

@ -522,7 +522,7 @@ func allPiecesInPlacement(ctx context.Context, overaly *overlay.Service, pieces
Tags: tags,
}
if !filter.MatchInclude(node) {
if !filter.Match(node) {
return false, nil
}
}