|
@@ -18,12 +18,22 @@ import (
|
|
|
"crypto/rand"
|
|
"crypto/rand"
|
|
|
"fmt"
|
|
"fmt"
|
|
|
"os"
|
|
"os"
|
|
|
|
|
+ "strings"
|
|
|
|
|
|
|
|
"github.com/coreos/etcd/Godeps/_workspace/src/google.golang.org/grpc"
|
|
"github.com/coreos/etcd/Godeps/_workspace/src/google.golang.org/grpc"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|
|
+var (
|
|
|
|
|
+ // dialTotal counts the number of mustCreateConn calls so that endpoint
|
|
|
|
|
+ // connections can be handed out in round-robin order
|
|
|
|
|
+ dialTotal int
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
func mustCreateConn() *grpc.ClientConn {
|
|
func mustCreateConn() *grpc.ClientConn {
|
|
|
- conn, err := grpc.Dial(endpoints)
|
|
|
|
|
|
|
+ eps := strings.Split(endpoints, ",")
|
|
|
|
|
+ endpoint := eps[dialTotal%len(eps)]
|
|
|
|
|
+ dialTotal++
|
|
|
|
|
+ conn, err := grpc.Dial(endpoint)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
fmt.Fprintf(os.Stderr, "dial error: %v\n", err)
|
|
fmt.Fprintf(os.Stderr, "dial error: %v\n", err)
|
|
|
os.Exit(1)
|
|
os.Exit(1)
|