Skip to content

Fix TestMonitorForChange for racetest #4041

@xiaolanz

Description

@xiaolanz

failed when
$ go test -v -run TestMonitorForChange ./pilot/pkg/config/monitor --race

blocking #3780

=== RUN   TestMonitorForChange
==================
WARNING: DATA RACE
Write at 0x00c4201c9320 by goroutine 16:
  runtime.mapassign()
      /usr/local/go/src/runtime/hashmap.go:521 +0x0
  istio.io/istio/pilot/pkg/config/memory.(*store).Update()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/memory/config.go:160 +0x49c
  istio.io/istio/pilot/pkg/config/monitor.(*Monitor).updateConfig()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor.go:119 +0x166
  istio.io/istio/pilot/pkg/config/monitor.(*Monitor).checkAndUpdate()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor.go:86 +0x2de
  istio.io/istio/pilot/pkg/config/monitor.(*Monitor).Start.func1()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor.go:62 +0x52

Previous read at 0x00c4201c9320 by goroutine 14:
  runtime.mapiterinit()
      /usr/local/go/src/runtime/hashmap.go:709 +0x0
  istio.io/istio/pilot/pkg/config/memory.(*store).List()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/memory/config.go:78 +0x4b7
  istio.io/istio/pilot/pkg/config/monitor_test.TestMonitorForChange.func4()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor_test.go:119 +0x91
  runtime.call32()
      /usr/local/go/src/runtime/asm_amd64.s:509 +0x3a
  reflect.Value.Call()
      /usr/local/go/src/reflect/value.go:302 +0xc0
  istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion.(*AsyncAssertion).pollActual()
      /Users/xiaolan/go/src/istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go:71 +0xce
  istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion.(*AsyncAssertion).match()
      /Users/xiaolan/go/src/istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go:141 +0x409
  istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion.(*AsyncAssertion).Should()
      /Users/xiaolan/go/src/istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go:48 +0x76
  istio.io/istio/pilot/pkg/config/monitor_test.TestMonitorForChange()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor_test.go:128 +0x67c
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:746 +0x16c

Goroutine 16 (running) created at:
  istio.io/istio/pilot/pkg/config/monitor.(*Monitor).Start()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor.go:55 +0x96
  istio.io/istio/pilot/pkg/config/monitor_test.TestMonitorForChange()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor_test.go:101 +0x3d5
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:746 +0x16c

Goroutine 14 (running) created at:
  testing.(*T).Run()
      /usr/local/go/src/testing/testing.go:789 +0x568
  testing.runTests.func1()
      /usr/local/go/src/testing/testing.go:1004 +0xa7
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:746 +0x16c
  testing.runTests()
      /usr/local/go/src/testing/testing.go:1002 +0x521
  testing.(*M).Run()
      /usr/local/go/src/testing/testing.go:921 +0x206
  main.main()
      istio.io/istio/pilot/pkg/config/monitor/_test/_testmain.go:52 +0x1d3
==================
==================
WARNING: DATA RACE
Read at 0x00c4201c9320 by goroutine 14:
  runtime.mapiterinit()
      /usr/local/go/src/runtime/hashmap.go:709 +0x0
  istio.io/istio/pilot/pkg/config/memory.(*store).List()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/memory/config.go:78 +0x4b7
  istio.io/istio/pilot/pkg/config/monitor_test.TestMonitorForChange.func4()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor_test.go:119 +0x91
  runtime.call32()
      /usr/local/go/src/runtime/asm_amd64.s:509 +0x3a
  reflect.Value.Call()
      /usr/local/go/src/reflect/value.go:302 +0xc0
  istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion.(*AsyncAssertion).pollActual()
      /Users/xiaolan/go/src/istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go:71 +0xce
  istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion.(*AsyncAssertion).match()
      /Users/xiaolan/go/src/istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go:141 +0x409
  istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion.(*AsyncAssertion).Should()
      /Users/xiaolan/go/src/istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go:48 +0x76
  istio.io/istio/pilot/pkg/config/monitor_test.TestMonitorForChange()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor_test.go:128 +0x67c
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:746 +0x16c

Previous write at 0x00c4201c9320 by goroutine 16:
  runtime.mapassign()
      /usr/local/go/src/runtime/hashmap.go:521 +0x0
  istio.io/istio/pilot/pkg/config/memory.(*store).Update()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/memory/config.go:160 +0x49c
  istio.io/istio/pilot/pkg/config/monitor.(*Monitor).updateConfig()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor.go:119 +0x166
  istio.io/istio/pilot/pkg/config/monitor.(*Monitor).checkAndUpdate()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor.go:86 +0x2de
  istio.io/istio/pilot/pkg/config/monitor.(*Monitor).Start.func1()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor.go:62 +0x52

Goroutine 14 (running) created at:
  testing.(*T).Run()
      /usr/local/go/src/testing/testing.go:789 +0x568
  testing.runTests.func1()
      /usr/local/go/src/testing/testing.go:1004 +0xa7
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:746 +0x16c
  testing.runTests()
      /usr/local/go/src/testing/testing.go:1002 +0x521
  testing.(*M).Run()
      /usr/local/go/src/testing/testing.go:921 +0x206
  main.main()
      istio.io/istio/pilot/pkg/config/monitor/_test/_testmain.go:52 +0x1d3

Goroutine 16 (running) created at:
  istio.io/istio/pilot/pkg/config/monitor.(*Monitor).Start()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor.go:55 +0x96
  istio.io/istio/pilot/pkg/config/monitor_test.TestMonitorForChange()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor_test.go:101 +0x3d5
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:746 +0x16c
==================
==================
WARNING: DATA RACE
Write at 0x00c42012e360 by goroutine 16:
  istio.io/istio/pilot/pkg/config/memory.(*store).Update()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/memory/config.go:160 +0x4be
  istio.io/istio/pilot/pkg/config/monitor.(*Monitor).updateConfig()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor.go:119 +0x166
  istio.io/istio/pilot/pkg/config/monitor.(*Monitor).checkAndUpdate()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor.go:86 +0x2de
  istio.io/istio/pilot/pkg/config/monitor.(*Monitor).Start.func1()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor.go:62 +0x52

Previous read at 0x00c42012e360 by goroutine 14:
  istio.io/istio/pilot/pkg/config/memory.(*store).List()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/memory/config.go:78 +0x27e
  istio.io/istio/pilot/pkg/config/monitor_test.TestMonitorForChange.func4()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor_test.go:119 +0x91
  runtime.call32()
      /usr/local/go/src/runtime/asm_amd64.s:509 +0x3a
  reflect.Value.Call()
      /usr/local/go/src/reflect/value.go:302 +0xc0
  istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion.(*AsyncAssertion).pollActual()
      /Users/xiaolan/go/src/istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go:71 +0xce
  istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion.(*AsyncAssertion).match()
      /Users/xiaolan/go/src/istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go:141 +0x409
  istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion.(*AsyncAssertion).Should()
      /Users/xiaolan/go/src/istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go:48 +0x76
  istio.io/istio/pilot/pkg/config/monitor_test.TestMonitorForChange()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor_test.go:128 +0x67c
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:746 +0x16c

Goroutine 16 (running) created at:
  istio.io/istio/pilot/pkg/config/monitor.(*Monitor).Start()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor.go:55 +0x96
  istio.io/istio/pilot/pkg/config/monitor_test.TestMonitorForChange()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor_test.go:101 +0x3d5
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:746 +0x16c

Goroutine 14 (running) created at:
  testing.(*T).Run()
      /usr/local/go/src/testing/testing.go:789 +0x568
  testing.runTests.func1()
      /usr/local/go/src/testing/testing.go:1004 +0xa7
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:746 +0x16c
  testing.runTests()
      /usr/local/go/src/testing/testing.go:1002 +0x521
  testing.(*M).Run()
      /usr/local/go/src/testing/testing.go:921 +0x206
  main.main()
      istio.io/istio/pilot/pkg/config/monitor/_test/_testmain.go:52 +0x1d3
==================
==================
WARNING: DATA RACE
Read at 0x00c42012e360 by goroutine 14:
  istio.io/istio/pilot/pkg/config/memory.(*store).List()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/memory/config.go:78 +0x27e
  istio.io/istio/pilot/pkg/config/monitor_test.TestMonitorForChange.func4()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor_test.go:119 +0x91
  runtime.call32()
      /usr/local/go/src/runtime/asm_amd64.s:509 +0x3a
  reflect.Value.Call()
      /usr/local/go/src/reflect/value.go:302 +0xc0
  istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion.(*AsyncAssertion).pollActual()
      /Users/xiaolan/go/src/istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go:71 +0xce
  istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion.(*AsyncAssertion).match()
      /Users/xiaolan/go/src/istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go:141 +0x409
  istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion.(*AsyncAssertion).Should()
      /Users/xiaolan/go/src/istio.io/istio/vendor/github.com/onsi/gomega/internal/asyncassertion/async_assertion.go:48 +0x76
  istio.io/istio/pilot/pkg/config/monitor_test.TestMonitorForChange()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor_test.go:128 +0x67c
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:746 +0x16c

Previous write at 0x00c42012e360 by goroutine 16:
  istio.io/istio/pilot/pkg/config/memory.(*store).Update()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/memory/config.go:160 +0x4be
  istio.io/istio/pilot/pkg/config/monitor.(*Monitor).updateConfig()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor.go:119 +0x166
  istio.io/istio/pilot/pkg/config/monitor.(*Monitor).checkAndUpdate()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor.go:86 +0x2de
  istio.io/istio/pilot/pkg/config/monitor.(*Monitor).Start.func1()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor.go:62 +0x52

Goroutine 14 (running) created at:
  testing.(*T).Run()
      /usr/local/go/src/testing/testing.go:789 +0x568
  testing.runTests.func1()
      /usr/local/go/src/testing/testing.go:1004 +0xa7
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:746 +0x16c
  testing.runTests()
      /usr/local/go/src/testing/testing.go:1002 +0x521
  testing.(*M).Run()
      /usr/local/go/src/testing/testing.go:921 +0x206
  main.main()
      istio.io/istio/pilot/pkg/config/monitor/_test/_testmain.go:52 +0x1d3

Goroutine 16 (running) created at:
  istio.io/istio/pilot/pkg/config/monitor.(*Monitor).Start()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor.go:55 +0x96
  istio.io/istio/pilot/pkg/config/monitor_test.TestMonitorForChange()
      /Users/xiaolan/go/src/istio.io/istio/pilot/pkg/config/monitor/monitor_test.go:101 +0x3d5
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:746 +0x16c
==================
--- FAIL: TestMonitorForChange (0.82s)
	testing.go:699: race detected during execution of test
FAIL
exit status 1
FAIL	istio.io/istio/pilot/pkg/config/monitor	1.448s

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions