Fixed handling of multiple nodes in region-aware routing

This commit is contained in:
David Zhao
2021-10-10 22:25:29 -07:00
parent 822f8c3944
commit 575b99840a
3 changed files with 22 additions and 2 deletions
+1 -2
View File
@@ -64,12 +64,11 @@ func (s *RegionAwareSelector) SelectNode(nodes []*livekit.Node, room *livekit.Ro
// find nodes nearest to current region
var nearestNodes []*livekit.Node
nearestRegion := s.CurrentRegion
nearestRegion := ""
minDist := math.MaxFloat64
for _, node := range nodes {
if node.Region == nearestRegion {
nearestNodes = append(nearestNodes, node)
minDist = 0
continue
}
if dist, ok := s.regionDistances[node.Region]; ok {
+18
View File
@@ -97,6 +97,24 @@ func TestRegionAwareRouting(t *testing.T) {
require.Equal(t, expectedNode, node)
})
t.Run("handles multiple nodes in same region", func(t *testing.T) {
expectedNode := newTestNodeInRegion(regionWest, true)
nodes := []*livekit.Node{
newTestNodeInRegion(regionSeattle, false),
newTestNodeInRegion(regionEast, true),
newTestNodeInRegion(regionEast, true),
expectedNode,
expectedNode,
}
s, err := selector.NewRegionAwareSelector(regionSeattle, rc)
require.NoError(t, err)
s.SysloadLimit = loadLimit
node, err := s.SelectNode(nodes, nil)
require.NoError(t, err)
require.Equal(t, expectedNode, node)
})
t.Run("functions when current region is full", func(t *testing.T) {
nodes := []*livekit.Node{
newTestNodeInRegion(regionWest, true),
+3
View File
@@ -173,6 +173,9 @@ func (s *LivekitServer) Start() error {
if s.config.PrometheusPort != 0 {
values = append(values, "portPrometheus", s.config.PrometheusPort)
}
if s.config.Region != "" {
values = append(values, "region", s.config.Region)
}
logger.Infow("starting LiveKit server", values...)
if err := s.httpServer.Serve(ln); err != http.ErrServerClosed {
logger.Errorw("could not start server", err)