blog-service icon indicating copy to clipboard operation
blog-service copied to clipboard

middleware.Translations

Open zyphub opened this issue 4 years ago • 8 comments

并发情况下会产生map线程安全问题

zyphub avatar Mar 08 '21 03:03 zyphub

提供下自己复现的日志,看起来是validator里面的问题。

  • https://pastebin.com/raw/jYSJLF9J

对应项目代码在:

  • https://github.com/go-programming-tour-book/blog-service/blob/master/internal/routers/router.go#L42

jiekun avatar Apr 01 '21 03:04 jiekun

并发情况下会产生map线程安全问题

没看出来代码哪里有问题,请指教一下

cwl168 avatar Apr 04 '21 14:04 cwl168

并发情况下会产生map线程安全问题

没看出来代码哪里有问题,请指教一下

压测的时候就会知道了,fatal也写得很清楚concurrent read and write

jiekun avatar Apr 04 '21 14:04 jiekun

并发情况下会产生map线程安全问题

没看出来代码哪里有问题,请指教一下

压测的时候就会知道了,fatal也写得很清楚concurrent read and write

关键性出错的代码在哪里,因为我们项目也用了跟他类似的,目前没发现问题

cwl168 avatar Apr 06 '21 02:04 cwl168

=========================================================================================

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

jason7758 avatar May 31 '21 03:05 jason7758

今天也发现了同样的问题,感觉就是universal-translator包里的RegisterTranslation方法中使用的map引起的DATA RACE

jason7758 avatar May 31 '21 05:05 jason7758

@eddycjy

jiekun avatar May 31 '21 05:05 jiekun

收到,感谢各位的反馈,近期我会看看怎么修复一下这个 BUG。目前来看是 universal-translator 包存在问题,没考虑到,又或是不支持这么实现。

@zyphub @2014BDuck @cwl168 @jason7758

eddycjy avatar Jun 14 '21 09:06 eddycjy