fix start background server

master
codeskyblue 8 years ago
parent b5d41896f5
commit 52ac079b7b

@ -37,21 +37,28 @@ func connect(ctx *cli.Context) (cc *grpc.ClientConn, err error) {
return conn, err return conn, err
} }
func startBackgroundServer() error {
cmd := exec.Command(os.Args[0], "serv")
timeout := time.Millisecond * 500
er := <-GoTimeoutFunc(timeout, cmd.Run)
if er == ErrGoTimeout {
return nil
}
return fmt.Errorf("server stared failed, %v", er)
}
func DialWithRetry(network, address string) (conn *grpc.ClientConn, err error) { func DialWithRetry(network, address string) (conn *grpc.ClientConn, err error) {
conn, err = grpcDial(network, address) if network == "unix" {
if err == nil { if _, er := os.Stat(address); er != nil {
return if err = startBackgroundServer(); err != nil {
} else { log.Warnf("Server started failed.")
cmd := exec.Command(os.Args[0], "serv") return nil, err
timeout := time.Millisecond * 500 } else {
er := <-GoTimeoutFunc(timeout, cmd.Run) log.Info("gosuv server started")
if er == ErrGoTimeout { }
fmt.Println("server started")
} else {
return nil, fmt.Errorf("server stared failed, %v", er)
} }
return grpcDial(network, address)
} }
return grpcDial(network, address)
} }
func wrap(f interface{}) func(*cli.Context) { func wrap(f interface{}) func(*cli.Context) {

Loading…
Cancel
Save