blog-service
blog-service copied to clipboard
middleware.Translations
并发情况下会产生map线程安全问题
提供下自己复现的日志,看起来是validator里面的问题。
- https://pastebin.com/raw/jYSJLF9J
对应项目代码在:
- https://github.com/go-programming-tour-book/blog-service/blob/master/internal/routers/router.go#L42
并发情况下会产生map线程安全问题
没看出来代码哪里有问题,请指教一下
并发情况下会产生map线程安全问题
没看出来代码哪里有问题,请指教一下
压测的时候就会知道了,fatal也写得很清楚concurrent read and write
并发情况下会产生map线程安全问题
没看出来代码哪里有问题,请指教一下
压测的时候就会知道了,fatal也写得很清楚concurrent read and write
关键性出错的代码在哪里,因为我们项目也用了跟他类似的,目前没发现问题
=========================================================================================
WARNING: DATA RACE Read at 0x00c00072fe90 by goroutine 35: runtime.mapaccess2() /usr/local/Cellar/go/1.15.3/libexec/src/runtime/map.go:452 +0x0 github.com/go-playground/validator/v10.(*Validate).RegisterTranslation() /Users/zhanglijie/go/pkg/mod/github.com/go-playground/validator/[email protected]/validator_instance.go:261 +0x10f github.com/go-playground/validator/v10/translations/zh.RegisterDefaultTranslations() /Users/zhanglijie/go/pkg/mod/github.com/go-playground/validator/[email protected]/translations/zh/zh.go:1328 +0x3d9 github.com/go-programming-tour-book/blog-service/internal/middleware.Translations.func1() /Users/zhanglijie/qucode/blog-service/internal/middleware/translations.go:34 +0x2c4
wrk --timeout 10s -t 1 -c 2 -d 1s http://127.0.0.1:8000/api/v1/tags Running 1s test @ http://127.0.0.1:8000/api/v1/tags 1 threads and 2 connections Thread Stats Avg Stdev Max +/- Stdev Latency 1.34ms 1.30ms 9.67ms 85.99% Req/Sec 1.03k 531.04 1.40k 100.00% 207 requests in 1.03s, 25.47KB read Socket errors: connect 0, read 230, write 18, timeout 0 Requests/sec: 200.17 Transfer/sec: 24.63KB
今天也发现了同样的问题,感觉就是universal-translator包里的RegisterTranslation方法中使用的map引起的DATA RACE
@eddycjy
收到,感谢各位的反馈,近期我会看看怎么修复一下这个 BUG。目前来看是 universal-translator 包存在问题,没考虑到,又或是不支持这么实现。
@zyphub @2014BDuck @cwl168 @jason7758