Move getting IP address into retry loop for agnhost/guestbook

Removes the fatal error from getIP and moves it to
retry loop so that application will not immediately
crash on failure.

Signed-off-by: hasheddan <georgedanielmangum@gmail.com>
This commit is contained in:
hasheddan 2020-05-12 13:55:17 -05:00
parent 9081dfb68d
commit 921b76ceaa
No known key found for this signature in database
GPG Key ID: BD68BC686A14C271

View File

@ -78,11 +78,18 @@ func registerNode(registerTo, port string) {
hostPort := net.JoinHostPort(registerTo, backendPort)
request := fmt.Sprintf("register?host=%s", getIP(hostPort).String())
log.Printf("Registering to master: %s/%s", hostPort, request)
start := time.Now()
for time.Since(start) < timeout {
_, err := net.ResolveTCPAddr("tcp", hostPort)
host, err := getIP(hostPort)
if err != nil {
log.Printf("unable to get IP %s: %v. Retrying in %s.", hostPort, err, sleep)
time.Sleep(sleep)
continue
}
request := fmt.Sprintf("register?host=%s", host.String())
log.Printf("Registering to master: %s/%s", hostPort, request)
_, err = net.ResolveTCPAddr("tcp", hostPort)
if err != nil {
log.Printf("unable to resolve %s, --slaveof param and/or --backend-port param are invalid: %v. Retrying in %s.", hostPort, err, sleep)
time.Sleep(sleep)
@ -287,13 +294,13 @@ func createHTTPClient(transport *http.Transport) *http.Client {
return client
}
func getIP(hostPort string) net.IP {
func getIP(hostPort string) (net.IP, error) {
conn, err := net.Dial("udp", hostPort)
if err != nil {
log.Fatal(err)
return []byte{}, err
}
defer conn.Close()
localAddr := conn.LocalAddr().(*net.UDPAddr)
return localAddr.IP
return localAddr.IP, nil
}