Skip to content

Commit fa3d006

Browse files
committed
Add error count and retry to register
1 parent 95cc3f2 commit fa3d006

1 file changed

Lines changed: 18 additions & 2 deletions

File tree

client.go

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff 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
}()

0 commit comments

Comments
 (0)