mirror of
https://github.com/prometheus/prometheus.git
synced 2025-03-05 20:59:13 -08:00
Fix data race in lexer and lexer test
As described in #1898 'go test -race' detects a race in lexer code. This pacth fixes it and also add '-race' option to test target to prevent regression.
This commit is contained in:
parent
b23169d86f
commit
485f7dde08
2
Makefile
2
Makefile
|
@ -38,7 +38,7 @@ check_license:
|
||||||
|
|
||||||
test:
|
test:
|
||||||
@echo ">> running tests"
|
@echo ">> running tests"
|
||||||
@$(GO) test -short $(pkgs)
|
@$(GO) test -race -short $(pkgs)
|
||||||
|
|
||||||
format:
|
format:
|
||||||
@echo ">> formatting code"
|
@echo ">> formatting code"
|
||||||
|
|
|
@ -428,9 +428,16 @@ func (l *lexer) nextItem() item {
|
||||||
|
|
||||||
// lex creates a new scanner for the input string.
|
// lex creates a new scanner for the input string.
|
||||||
func lex(input string) *lexer {
|
func lex(input string) *lexer {
|
||||||
|
return lexWithSeriesDesc(input, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
// lexWithSeriesDesc creates a new scanner for the input string
|
||||||
|
// and specify seriesDesc to prevent data race in tests
|
||||||
|
func lexWithSeriesDesc(input string, seriesDesc bool) *lexer {
|
||||||
l := &lexer{
|
l := &lexer{
|
||||||
input: input,
|
input: input,
|
||||||
items: make(chan item),
|
items: make(chan item),
|
||||||
|
seriesDesc: seriesDesc,
|
||||||
}
|
}
|
||||||
go l.run()
|
go l.run()
|
||||||
return l
|
return l
|
||||||
|
|
|
@ -438,9 +438,7 @@ var tests = []struct {
|
||||||
// for the parser to avoid duplicated effort.
|
// for the parser to avoid duplicated effort.
|
||||||
func TestLexer(t *testing.T) {
|
func TestLexer(t *testing.T) {
|
||||||
for i, test := range tests {
|
for i, test := range tests {
|
||||||
l := lex(test.input)
|
l := lexWithSeriesDesc(test.input, test.seriesDesc)
|
||||||
l.seriesDesc = test.seriesDesc
|
|
||||||
|
|
||||||
out := []item{}
|
out := []item{}
|
||||||
for it := range l.items {
|
for it := range l.items {
|
||||||
out = append(out, it)
|
out = append(out, it)
|
||||||
|
|
Loading…
Reference in a new issue