From 943445270f5f7b2599719815cff1cd0f60dcc79a Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Sat, 28 Dec 2019 14:11:46 +0300 Subject: [PATCH] fix registry check issue (#1067) fix #1066 Signed-off-by: Vasiliy Tolstov --- server/rpc_server.go | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/server/rpc_server.go b/server/rpc_server.go index a7426059..7d1642ff 100644 --- a/server/rpc_server.go +++ b/server/rpc_server.go @@ -835,16 +835,19 @@ func (s *rpcServer) Start() error { s.RLock() registered := s.registered s.RUnlock() - if err = s.opts.RegisterCheck(s.opts.Context); err != nil && registered { + rerr := s.opts.RegisterCheck(s.opts.Context) + if rerr != nil && registered { log.Logf("Server %s-%s register check error: %s, deregister it", config.Name, config.Id, err) // deregister self in case of error if err := s.Deregister(); err != nil { log.Logf("Server %s-%s deregister error: %s", config.Name, config.Id, err) } - } else { - if err := s.Register(); err != nil { - log.Logf("Server %s-%s register error: %s", config.Name, config.Id, err) - } + } else if rerr != nil && !registered { + log.Logf("Server %s-%s register check error: %s", config.Name, config.Id, err) + continue + } + if err := s.Register(); err != nil { + log.Logf("Server %s-%s register error: %s", config.Name, config.Id, err) } // wait for exit case ch = <-s.exit: @@ -854,9 +857,14 @@ func (s *rpcServer) Start() error { } } - // deregister self - if err := s.Deregister(); err != nil { - log.Logf("Server %s-%s deregister error: %s", config.Name, config.Id, err) + s.RLock() + registered := s.registered + s.RUnlock() + if registered { + // deregister self + if err := s.Deregister(); err != nil { + log.Logf("Server %s-%s deregister error: %s", config.Name, config.Id, err) + } } s.Lock()