|
@@ -1,6 +1,13 @@
|
|
package registry
|
|
package registry
|
|
|
|
|
|
-import "context"
|
|
|
|
|
|
+import (
|
|
|
|
+ "context"
|
|
|
|
+ "errors"
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+var (
|
|
|
|
+ ErrServiceUnavailable = errors.New("service unavailable")
|
|
|
|
+)
|
|
|
|
|
|
const (
|
|
const (
|
|
StatusHealthy = "healthy"
|
|
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 {
|
|
if nodes, err = selector.registry.Get(ctx, name); err != nil {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- for _, node = range nodes {
|
|
|
|
- if node.Status == StatusHealthy {
|
|
|
|
|
|
+ for _, nv := range nodes {
|
|
|
|
+ if nv.Status == StatusHealthy {
|
|
|
|
+ node = nv
|
|
break
|
|
break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ if node == nil {
|
|
|
|
+ err = ErrServiceUnavailable
|
|
|
|
+ }
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|