alibaba/sentinel-golang
[BUG] Race condition in metric.DefaultMetricSearcher
Open
#488 opened on Oct 11, 2022
good first issuekind/bug
Repository metrics
- Stars
- (2,957 stars)
- PR merge metrics
- (PR metrics pending)
Description
Issue Description
Type: bug report
Describe what happened
Race condition was detected in metric.DefaultMetricSearcher:
WARNING: DATA RACE
Read at 0x00c000510f00 by goroutine 59:
github.com/alibaba/sentinel-golang/core/log/metric.(*DefaultMetricSearcher).getOffsetStartAndFileIdx()
/Users/sczyh30/go/pkg/mod/github.com/alibaba/sentinel-golang@v1.0.3/core/log/metric/searcher.go:101 +0x106
github.com/alibaba/sentinel-golang/core/log/metric.(*DefaultMetricSearcher).searchOffsetAndRead()
/Users/sczyh30/go/pkg/mod/github.com/alibaba/sentinel-golang@v1.0.3/core/log/metric/searcher.go:71 +0x12a
github.com/alibaba/sentinel-golang/core/log/metric.(*DefaultMetricSearcher).FindByTimeAndResource()
/Users/sczyh30/go/pkg/mod/github.com/alibaba/sentinel-golang@v1.0.3/core/log/metric/searcher.go:53 +0xc7
...
Previous write at 0x00c000510f00 by goroutine 31:
github.com/alibaba/sentinel-golang/core/log/metric.(*DefaultMetricSearcher).findOffsetToStart()
/Users/sczyh30/go/pkg/mod/github.com/alibaba/sentinel-golang@v1.0.3/core/log/metric/searcher.go:165 +0x5ca
github.com/alibaba/sentinel-golang/core/log/metric.(*DefaultMetricSearcher).searchOffsetAndRead()
/Users/sczyh30/go/pkg/mod/github.com/alibaba/sentinel-golang@v1.0.3/core/log/metric/searcher.go:80 +0x1fd
github.com/alibaba/sentinel-golang/core/log/metric.(*DefaultMetricSearcher).FindByTimeAndResource()
/Users/sczyh30/go/pkg/mod/github.com/alibaba/sentinel-golang@v1.0.3/core/log/metric/searcher.go:53 +0xc7
...
Describe what you expected to happen
No race condition.
How to reproduce it (as minimally and precisely as possible)
Run a demo and invoke the search function of the MetricSearcher concurrently.
Tell us your environment
Sentinel Go v1.0.3
Anything else we need to know?
NONE