Dont block on grpc if nothing is listeing on rkt api service port (#1218)

attempt to connect to rkt api service with net before grpc
This commit is contained in:
Shaya Potter 2016-04-15 16:11:49 -07:00 committed by Tim St. Clair
parent bbd05e4baa
commit 5dc9fbad3c

View File

@ -16,6 +16,7 @@ package rkt
import (
"fmt"
"net"
"sync"
"time"
@ -27,6 +28,7 @@ import (
const (
defaultRktAPIServiceAddr = "localhost:15441"
timeout = 2 * time.Second
)
var (
@ -37,10 +39,19 @@ var (
func Client() (rktapi.PublicAPIClient, error) {
once.Do(func() {
apisvcConn, err := grpc.Dial(defaultRktAPIServiceAddr, grpc.WithInsecure(), grpc.WithTimeout(5*time.Second))
conn, err := net.DialTimeout("tcp", defaultRktAPIServiceAddr, timeout)
if err != nil {
rktClient = nil
rktClientErr = fmt.Errorf("rkt: cannot connect to rkt api service: %v", err)
rktClientErr = fmt.Errorf("rkt: cannot tcp Dial rkt api service: %v", err)
return
}
conn.Close()
apisvcConn, err := grpc.Dial(defaultRktAPIServiceAddr, grpc.WithInsecure(), grpc.WithTimeout(timeout))
if err != nil {
rktClient = nil
rktClientErr = fmt.Errorf("rkt: cannot grpc Dial rkt api service: %v", err)
return
}