File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -263,7 +263,7 @@ func (c *ServiceClient) serve(ctx context.Context) (err error) {
263263 return err
264264}
265265
266- func (c * ServiceClient ) refreshAPI ( ctx context. Context ) error {
266+ func (c * ServiceClient ) register ( ) error {
267267 info := c .svc .GetInfo ()
268268 // Register
269269 if err := c .refresh (); err != nil {
@@ -277,6 +277,10 @@ func (c *ServiceClient) refreshAPI(ctx context.Context) error {
277277 return err
278278 }
279279 }
280+ return nil
281+ }
282+
283+ func (c * ServiceClient ) refreshAPI (ctx context.Context ) error {
280284 for {
281285 select {
282286 case <- time .After (time .Duration (c .cfg .HeartbeatInterval ) * time .Second ):
@@ -355,15 +359,27 @@ func (c *ServiceClient) Start(force bool) error {
355359 go func () {
356360 // retry api operations without restarting listen
357361 defer c .wg .Done ()
362+ errCount := 0
358363 for {
359- c .refreshAPI (retryCtx )
364+ err := c .register ()
365+ if err != nil {
366+ errCount += 1
367+ } else {
368+ errCount = 0
369+ c .refreshAPI (retryCtx )
370+ }
360371 select {
361372 case <- c .stopCh :
362373 return
363374 case <- retryCtx .Done ():
364375 return
365376 default :
366377 }
378+ if errCount >= 5 {
379+ log .Printf ("Too many error on register [%s], restarting." , info .Name )
380+ errCh <- err
381+ return
382+ }
367383 time .Sleep (3 * time .Second )
368384 }
369385 }()
You can’t perform that action at this time.
0 commit comments