Quellcode durchsuchen

修复select获取到的服务可能不可用的情况

lxg vor 3 Jahren
Ursprung
Commit
ae2b2c050a
1 geänderte Dateien mit 14 neuen und 3 gelöschten Zeilen
  1. 14 3
      registry/selector.go

+ 14 - 3
registry/selector.go

@@ -1,6 +1,13 @@
 package registry
 
-import "context"
+import (
+	"context"
+	"errors"
+)
+
+var (
+	ErrServiceUnavailable = errors.New("service unavailable")
+)
 
 const (
 	StatusHealthy = "healthy"
@@ -20,11 +27,15 @@ func (selector *Selector) Select(ctx context.Context, name string) (node *Servic
 	if nodes, err = selector.registry.Get(ctx, name); err != nil {
 		return
 	}
-	for _, node = range nodes {
-		if node.Status == StatusHealthy {
+	for _, nv := range nodes {
+		if nv.Status == StatusHealthy {
+			node = nv
 			break
 		}
 	}
+	if node == nil {
+		err = ErrServiceUnavailable
+	}
 	return
 }