首页 > 其他 > 详细

记go-validator组件在并发时候崩溃

时间:2021-07-21 09:32:34      阅读:38      评论:0      收藏:0      [点我收藏+]

在一个gin项目中使用到了github.com/go-playground/validator/v10和github.com/go-playground/validator/v10/translations/zh

发现个很有意思的事情,如果我使用了translation中间件,在并发超过5的时候,项目就直接崩溃

通过打印堆栈日志发现在go-playground/validator/v10@v10.4.1/validator_instance.go:257到265行

if v.transTagFunc == nil {
    v.transTagFunc = make(map[ut.Translator]map[string]TranslationFunc)
}

if err = registerFn(trans); err != nil {
    return
}

m, ok := v.transTagFunc[trans]

这段注册translation的代码中使用到了线程不安全的map 并发情况下会有concurent write的报错    

修改方案:

不使用translation中间件了

记go-validator组件在并发时候崩溃

原文:https://www.cnblogs.com/wanghaostec/p/15037690.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!