move node type definition to db level for node selection (#1295)

This commit is contained in:
Maximillian von Briesen 2019-02-11 11:35:28 -05:00 committed by GitHub
parent 6e38481de1
commit c6c23a319b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 5 additions and 13 deletions

View File

@ -124,8 +124,6 @@ func (cache *Cache) FindStorageNodes(ctx context.Context, req *pb.FindStorageNod
}
reputableNodes, err := cache.db.SelectNodes(ctx, reputableNodeCount, &NodeCriteria{
Type: pb.NodeType_STORAGE,
FreeBandwidth: freeBandwidth,
FreeDisk: freeDisk,
@ -142,8 +140,6 @@ func (cache *Cache) FindStorageNodes(ctx context.Context, req *pb.FindStorageNod
newNodeCount := int64(float64(reputableNodeCount) * preferences.NewNodePercentage)
newNodes, err := cache.db.SelectNewNodes(ctx, int(newNodeCount), &NewNodeCriteria{
Type: pb.NodeType_STORAGE,
FreeBandwidth: freeBandwidth,
FreeDisk: freeDisk,

View File

@ -176,9 +176,7 @@ func TestRandomizedSelection(t *testing.T) {
// select numNodesToSelect nodes selectIterations times
for i := 0; i < selectIterations; i++ {
nodes, err := cache.SelectNodes(ctx, numNodesToSelect, &overlay.NodeCriteria{
Type: pb.NodeType_STORAGE,
})
nodes, err := cache.SelectNodes(ctx, numNodesToSelect, &overlay.NodeCriteria{})
require.NoError(t, err)
require.Len(t, nodes, numNodesToSelect)

View File

@ -67,8 +67,6 @@ func (server *Server) BulkLookup(ctx context.Context, reqs *pb.LookupRequests) (
// NodeCriteria are the requirements for selecting nodes
type NodeCriteria struct {
Type pb.NodeType
FreeBandwidth int64
FreeDisk int64
@ -82,8 +80,6 @@ type NodeCriteria struct {
// NewNodeCriteria are the requirement for selecting new nodes
type NewNodeCriteria struct {
Type pb.NodeType
FreeBandwidth int64
FreeDisk int64

View File

@ -24,22 +24,24 @@ type overlaycache struct {
}
func (cache *overlaycache) SelectNodes(ctx context.Context, count int, criteria *overlay.NodeCriteria) ([]*pb.Node, error) {
nodeType := int(pb.NodeType_STORAGE)
return cache.queryFilteredNodes(ctx, criteria.Excluded, count, `
WHERE node_type = ? AND free_bandwidth >= ? AND free_disk >= ?
AND audit_count >= ?
AND audit_success_ratio >= ?
AND uptime_count >= ?
AND audit_uptime_ratio >= ?
`, int(criteria.Type), criteria.FreeBandwidth, criteria.FreeDisk,
`, nodeType, criteria.FreeBandwidth, criteria.FreeDisk,
criteria.AuditCount, criteria.AuditSuccessRatio, criteria.UptimeCount, criteria.UptimeSuccessRatio,
)
}
func (cache *overlaycache) SelectNewNodes(ctx context.Context, count int, criteria *overlay.NewNodeCriteria) ([]*pb.Node, error) {
nodeType := int(pb.NodeType_STORAGE)
return cache.queryFilteredNodes(ctx, criteria.Excluded, count, `
WHERE node_type = ? AND free_bandwidth >= ? AND free_disk >= ?
AND audit_count < ?
`, int(criteria.Type), criteria.FreeBandwidth, criteria.FreeDisk,
`, nodeType, criteria.FreeBandwidth, criteria.FreeDisk,
criteria.AuditThreshold,
)
}