uber / aresdb

A GPU-powered real-time analytics storage and query engine.
https://eng.uber.com/aresdb/
Apache License 2.0
2.99k stars 232 forks source link

fix concurrent map access fatal error #337

Closed jshencode closed 4 years ago

jshencode commented 4 years ago

missing lock

fatal error: concurrent map read and map write

goroutine 41054 [running]:
runtime.throw(0x150f069, 0x21)
        /usr/local/go/src/runtime/panic.go:608 +0x72 fp=0xc00ea399a8 sp=0xc00ea39978 pc=0x43b122
runtime.mapaccess2(0x12b7e60, 0xc000899890, 0xc00ea39a30, 0xc00ea39a48, 0xe327bb)
        /usr/local/go/src/runtime/map.go:453 +0x223 fp=0xc00ea399f0 sp=0xc00ea399a8 pc=0x41c853
github.com/uber/aresdb/datanode/bootstrap.(*PeerDataNodeServerImpl).checkReqExist(0xc0007dcd70, 0xc0b0186c60, 0x12, 0xc000000005)
        /home/shz/gocode/pkg/mod/github.com/uber/aresdb@v0.0.3-0.20191028200138-affd4a9f8540/datanode/bootstrap/bootstrap_server.go:170 +0x67 fp=0xc00ea39a58 sp=0xc00ea399f0 pc=0xe2f4c7
github.com/uber/aresdb/datanode/bootstrap.(*PeerDataNodeServerImpl).StartSession(0xc0007dcd70, 0x16bb520, 0xc057a30c30, 0xc001bcb950, 0x0, 0x0, 0x0)
        /home/shz/gocode/pkg/mod/github.com/uber/aresdb@v0.0.3-0.20191028200138-affd4a9f8540/datanode/bootstrap/bootstrap_server.go:153 +0x1ad fp=0xc00ea39ad0 sp=0xc00ea39a58 pc=0xe2f2cd
github.com/uber/aresdb/datanode/generated/proto/rpc._PeerDataNode_StartSession_Handler(0x146d540, 0xc0007dcd70, 0x16bb520, 0xc057a30c30, 0xc001bcb900, 0x0, 0x0, 0x0, 0xc0264dcbd0, 0x2b)
        /home/shz/gocode/pkg/mod/github.com/uber/aresdb@v0.0.3-0.20191028200138-affd4a9f8540/datanode/generated/proto/rpc/peer_streaming.pb.go:1411 +0x23e fp=0xc00ea39b40 sp=0xc00ea39ad0 pc=0xe2b13e
google.golang.org/grpc.(*Server).processUnaryRPC(0xc000cd9800, 0x16c6da0, 0xc06fa24fc0, 0xc0ab486e00, 0xc001434000, 0x2478e58, 0x0, 0x0, 0x0)
        /home/shz/gocode/pkg/mod/google.golang.org/grpc@v1.21.1/server.go:998 +0x4a2 fp=0xc00ea39de0 sp=0xc00ea39b40 pc=0x975952
google.golang.org/grpc.(*Server).handleStream(0xc000cd9800, 0x16c6da0, 0xc06fa24fc0, 0xc0ab486e00, 0x0)
        /home/shz/gocode/pkg/mod/google.golang.org/grpc@v1.21.1/server.go:1278 +0xe02 fp=0xc00ea39f80 sp=0xc00ea39de0 pc=0x979512
google.golang.org/grpc.(*Server).serveStreams.func1.1(0xc070bb0a60, 0xc000cd9800, 0x16c6da0, 0xc06fa24fc0, 0xc0ab486e00)
        /home/shz/gocode/pkg/mod/google.golang.org/grpc@v1.21.1/server.go:717 +0x9f fp=0xc00ea39fb8 sp=0xc00ea39f80 pc=0x9852ff
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:1333 +0x1 fp=0xc00ea39fc0 sp=0xc00ea39fb8 pc=0x46af41
created by google.golang.org/grpc.(*Server).serveStreams.func1
        /home/shz/gocode/pkg/mod/google.golang.org/grpc@v1.21.1/server.go:715 +0xa1