提交 abd8b6e1 authored 作者: mooncake9527's avatar mooncake9527

retry

上级 a05087d1
...@@ -2,7 +2,7 @@ package errcode ...@@ -2,7 +2,7 @@ package errcode
// http system level error code, error code range 10000~20000 // http system level error code, error code range 10000~20000
var ( var (
Success = NewError(1, "ok") Success = NewError(1, "OK")
InvalidParams = NewError(100001, "Invalid Parameter") InvalidParams = NewError(100001, "Invalid Parameter")
Unauthorized = NewError(100002, "Unauthorized") Unauthorized = NewError(100002, "Unauthorized")
InternalServerError = NewError(100003, "Internal Server Error") InternalServerError = NewError(100003, "Internal Server Error")
......
...@@ -2,7 +2,7 @@ package errcode ...@@ -2,7 +2,7 @@ package errcode
// rpc system level error code with status prefix, error code range 30000~40000 // rpc system level error code with status prefix, error code range 30000~40000
var ( var (
StatusSuccess = NewRPCStatus(0, "ok") StatusSuccess = NewRPCStatus(0, "OK")
StatusCanceled = NewRPCStatus(300001, "Canceled") StatusCanceled = NewRPCStatus(300001, "Canceled")
StatusUnknown = NewRPCStatus(300002, "Unknown") StatusUnknown = NewRPCStatus(300002, "Unknown")
......
...@@ -2,6 +2,7 @@ package merge ...@@ -2,6 +2,7 @@ package merge
import ( import (
"container/list" "container/list"
"fmt"
"time" "time"
) )
...@@ -19,8 +20,18 @@ func NewFanIn(d time.Duration, maxSize int, sync func(l *list.List) error) *FanI ...@@ -19,8 +20,18 @@ func NewFanIn(d time.Duration, maxSize int, sync func(l *list.List) error) *FanI
lst: list.New(), lst: list.New(),
ticker: *time.NewTicker(d), ticker: *time.NewTicker(d),
sync: func(l *list.List) error { sync: func(l *list.List) error {
defer l.Init() defer func() {
return sync(l) if err := recover(); err != nil {
l.Init()
fmt.Println(fmt.Sprintf("panic %+v", err))
}
}()
if err := sync(l); err != nil {
l.Init()
return err
}
l.Init()
return nil
}, },
cancel: make(chan struct{}), cancel: make(chan struct{}),
in: make(chan any), in: make(chan any),
......
...@@ -109,8 +109,9 @@ func Retry(retryFunc RetryFunc, opts ...Option) error { ...@@ -109,8 +109,9 @@ func Retry(retryFunc RetryFunc, opts ...Option) error {
for i < config.retryTimes { for i < config.retryTimes {
err := retryFunc() err := retryFunc()
if err != nil { if err != nil {
after := time.After(config.backoffStrategy.CalculateInterval())
select { select {
case <-time.After(config.backoffStrategy.CalculateInterval()): case <-after:
case <-config.context.Done(): case <-config.context.Done():
return errors.New("retry is cancelled") return errors.New("retry is cancelled")
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论