提交 05cd3107 authored 作者: mooncake's avatar mooncake

modify web_log

上级 7084d898
......@@ -107,8 +107,7 @@ func Retry(retryFunc RetryFunc, opts ...Option) error {
err error
)
for i < config.retryTimes {
err = retryFunc()
if err != nil {
if err = retryFunc(); err != nil {
after := time.After(config.backoffStrategy.CalculateInterval())
select {
case <-after:
......@@ -125,7 +124,7 @@ func Retry(retryFunc RetryFunc, opts ...Option) error {
// lastSlash := strings.LastIndex(funcPath, "/")
// funcName := funcPath[lastSlash+1:]
return fmt.Errorf("retry[3] faild, %s", err.Error())
return fmt.Errorf("retry[%d] faild, %s", config.retryTimes, err.Error())
}
type BackoffStrategy interface {
......
......@@ -113,24 +113,29 @@ func Init() {
return nil
}
insertFn := func() error {
var err error
if debug {
if err := webLogDaoInstance.CreateSlice(ctx, ors); err != nil {
logger.Error("[webLog] insert fail detail", logger.Err(err), ctxutils.CtxTraceIDField(ctx))
return err
}
err = webLogDaoInstance.CreateSlice(ctx, ors)
} else {
if err := webLogDaoInstance.CreateSliceSilent(ctx, ors); err != nil {
err = webLogDaoInstance.CreateSliceSilent(ctx, ors)
}
if err != nil {
if strings.Contains(err.Error(), "Duplicate entry") {
for _, r := range ors {
_ = webLogDaoInstance.Create(ctx, r)
}
return nil
}
logger.Error("[webLog] insert fail detail", logger.Err(err), ctxutils.CtxTraceIDField(ctx))
return err
}
}
return nil
}
go func() {
if debug {
logger.Info("[webLog]batch insert start")
}
if err := retryutils.Retry(insertFn, retryutils.RetryTimes(10), retryutils.RetryWithLinearBackoff(32*time.Minute)); err != nil {
if err := retryutils.Retry(insertFn, retryutils.RetryTimes(3), retryutils.RetryWithLinearBackoff(32*time.Minute)); err != nil {
logger.Error("[webLog] insert fail", logger.String("err", err.Error()), ctxutils.CtxTraceIDField(ctx))
for _, or := range ors {
logger.Error("[webLog] insert fail detail", logger.String("user_id", or.UID.String()), logger.String("operate", or.Operate), ctxutils.CtxTraceIDField(ctx))
......@@ -183,6 +188,10 @@ func (x *webLogDao) CreateSlice(ctx context.Context, ors []*WebLog) error {
return x.db.WithContext(ctx).Create(ors).Error
}
func (x *webLogDao) Create(ctx context.Context, r *WebLog) error {
return x.db.WithContext(ctx).Create(r).Error
}
type WebLog struct {
ID xsf.ID `json:"id" form:"id" swaggertype:"string" gorm:"column:id;type:bigint(20) unsigned;primaryKey;autoIncrement;comment:主键" example:"1000"` //主键
CompanyID xsf.ID `json:"companyID" form:"companyID" swaggertype:"string" gorm:"column:company_id;type:bigint(20) unsigned;comment:公司ID" example:"1008"` //公司ID
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论