-
Type:
Bug
-
Resolution: Done
-
Priority:
Major - P3
-
None
-
Affects Version/s: 1.0.3
-
Component/s: BSON, JSON & ExtJSON
-
None
-
Environment:go version go1.12.6 darwin/amd64
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Hi. I'm not sure, maybe I have some problems with my code. But it seems something wrong in bson encoder/decoder.
At least for this moment, I couldn't represent this race with a simple test.
But I'll try to do it. Here is race detector log.
==================
WARNING: DATA RACE
Write at 0x00c000534080 by goroutine 86:
reflect.typedmemmove()
/usr/local/Cellar/go/1.12.6/libexec/src/runtime/mbarrier.go:177 +0x0
reflect.Value.Set()
/usr/local/Cellar/go/1.12.6/libexec/src/reflect/value.go:1475 +0xe5
reflect.Append()
/usr/local/Cellar/go/1.12.6/libexec/src/reflect/value.go:1964 +0x153
github.com/percona/pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/bsoncodec.DefaultValueDecoders.SliceDecodeValue()
pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/default_value_decoders.go:782 +0x629
github.com/percona/pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/bsoncodec.DefaultValueDecoders.SliceDecodeValue-fm()
pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/default_value_decoders.go:745 +0xa3
github.com/percona/pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/bsoncodec.ValueDecoderFunc.DecodeValue()
pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/bsoncodec.go:156 +0xab
github.com/percona/pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/bsoncodec.(*StructCodec).DecodeValue()
pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/struct_codec.go:204 +0x6e6
github.com/percona/pmm-agent/vendor/go.mongodb.org/mongo-driver/bson.(*Decoder).Decode()
pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/decoder.go:92 +0x2e3
github.com/percona/pmm-agent/vendor/go.mongodb.org/mongo-driver/bson.unmarshalFromReader()
pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/unmarshal.go:100 +0x137
github.com/percona/pmm-agent/vendor/go.mongodb.org/mongo-driver/bson.UnmarshalWithRegistry()
pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/unmarshal.go:45 +0x1b5
github.com/percona/pmm-agent/agents/mongodb/internal/profiler/collector.connectAndCollect()
pmm-agent/vendor/go.mongodb.org/mongo-driver/mongo/cursor.go:123 +0x76f
github.com/percona/pmm-agent/agents/mongodb/internal/profiler/collector.start()
pmm-agent/agents/mongodb/internal/profiler/collector/collector.go:186 +0x10ePrevious read at 0x00c000534080 by goroutine 88:
github.com/percona/pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/bsoncodec.DefaultValueEncoders.SliceEncodeValue()
pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/default_value_encoders.go:390 +0x3ba
github.com/percona/pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/bsoncodec.DefaultValueEncoders.SliceEncodeValue-fm()
pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/default_value_encoders.go:372 +0x83
github.com/percona/pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/bsoncodec.ValueEncoderFunc.EncodeValue()
pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/bsoncodec.go:142 +0x8b
github.com/percona/pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/bsoncodec.(*StructCodec).EncodeValue()
pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/bsoncodec/struct_codec.go:97 +0x6ff
github.com/percona/pmm-agent/vendor/go.mongodb.org/mongo-driver/bson.(*Encoder).Encode()
pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/encoder.go:79 +0x210
github.com/percona/pmm-agent/vendor/go.mongodb.org/mongo-driver/bson.MarshalExtJSONAppendWithContext()
pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/marshal.go:150 +0x247
github.com/percona/pmm-agent/vendor/go.mongodb.org/mongo-driver/bson.MarshalExtJSON()
pmm-agent/vendor/go.mongodb.org/mongo-driver/bson/marshal.go:113 +0xe5
github.com/percona/pmm-agent/vendor/github.com/percona/percona-toolkit/src/go/mongolib/stats.(*Stats).Add()
pmm-agent/vendor/github.com/percona/percona-toolkit/src/go/mongolib/stats/stats.go:78 +0xf4f
github.com/percona/pmm-agent/agents/mongodb/internal/profiler/aggregator.(*Aggregator).Add()
pmm-agent/agents/mongodb/internal/profiler/aggregator/aggregator.go:111 +0x374
github.com/percona/pmm-agent/agents/mongodb/internal/profiler/parser.start()
pmm-agent/agents/mongodb/internal/profiler/parser/parser.go:141 +0x245Goroutine 86 (running) created at:
github.com/percona/pmm-agent/agents/mongodb/internal/profiler/collector.(*Collector).Start()
pmm-agent/agents/mongodb/internal/profiler/collector/collector.go:94 +0x593
github.com/percona/pmm-agent/agents/mongodb/internal/profiler.(*monitor).Start()
pmm-agent/agents/mongodb/internal/profiler/monitor.go:77 +0x25b
github.com/percona/pmm-agent/agents/mongodb/internal/profiler.(*monitors).MonitorAll()
pmm-agent/agents/mongodb/internal/profiler/monitors.go:89 +0x4d8
github.com/percona/pmm-agent/agents/mongodb/internal/profiler.start()
pmm-agent/agents/mongodb/internal/profiler/profiler.go:207 +0xaaGoroutine 88 (running) created at:
github.com/percona/pmm-agent/agents/mongodb/internal/profiler/parser.(*Parser).Start()
pmm-agent/agents/mongodb/internal/profiler/parser/parser.go:71 +0x352
github.com/percona/pmm-agent/agents/mongodb/internal/profiler.(*monitor).Start()
pmm-agent/agents/mongodb/internal/profiler/monitor.go:85 +0x43b
github.com/percona/pmm-agent/agents/mongodb/internal/profiler.(*monitors).MonitorAll()
pmm-agent/agents/mongodb/internal/profiler/monitors.go:89 +0x4d8
github.com/percona/pmm-agent/agents/mongodb/internal/profiler.start()
pmm-agent/agents/mongodb/internal/profiler/profiler.go:207 +0xaa
==================