From f14482040eac85d8151ccc364ec9eec91e59189a Mon Sep 17 00:00:00 2001 From: oiooj Date: Thu, 26 Nov 2015 23:14:09 +0800 Subject: [PATCH] Fix restore functionality hangs forever --- meta/store.go | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/meta/store.go b/meta/store.go index be2ac0a2ae..f59b7f4742 100644 --- a/meta/store.go +++ b/meta/store.go @@ -16,7 +16,6 @@ import ( "path/filepath" "sort" "strconv" - "strings" "sync" "time" @@ -735,12 +734,12 @@ func (s *Store) serveExecListener() { // Accept next TCP connection. var err error conn, err := s.ExecListener.Accept() - if err != nil { - if strings.Contains(err.Error(), "connection closed") { - return - } - s.Logger.Printf("temporary accept error: %s", err) + if opErr, ok := err.(*net.OpError); ok && opErr.Temporary() { + s.Logger.Printf("exec listener temporary accept error: %s", err) continue + } else if err != nil { + s.Logger.Printf("exec listener accept error and closed: %s", err) + return } // Handle connection in a separate goroutine. @@ -845,13 +844,12 @@ func (s *Store) serveRPCListener() { for { // Accept next TCP connection. conn, err := s.RPCListener.Accept() - if err != nil { - if strings.Contains(err.Error(), "connection closed") { - return - } - - s.Logger.Printf("temporary accept error: %s", err) + if opErr, ok := err.(*net.OpError); ok && opErr.Temporary() { + s.Logger.Printf("RPC listener temporary accept error: %s", err) continue + } else if err != nil { + s.Logger.Printf("RPC listener accept error and closed: %s", err) + return } // Handle connection in a separate goroutine.