census-instrumentation / opencensus-go

A stats collection and distributed tracing framework
http://opencensus.io
Apache License 2.0
2.05k stars 327 forks source link

Tag has concurrent access problem #1280

Open diwufeiwen opened 2 years ago

diwufeiwen commented 2 years ago

Please answer these questions before submitting a bug report.

What version of OpenCensus are you using?

go.opencensus.io v0.23.0

What version of Go are you using?

go version go1.18.2

What did you do?

If possible, provide a recipe for reproducing the error.

What did you see instead?

go.opencensus.io@v0.23.0/tag/map.go#L36

// Map is a map of tags. Use New to create a context containing // a new Map. type Map struct { m map[Key]tagContent }

No locking, not thread safe.

go func() { ctx, _ = tag.New(ctx, tag.Upsert(***) stats.Record(ctx, ...) }

It will panic when there is a lot of concurrency