You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@yunikorn.apache.org by "Weiwei Yang (Jira)" <ji...@apache.org> on 2021/08/20 16:21:00 UTC
[jira] [Resolved] (YUNIKORN-805) Fix race condition on the TestMode
flag
[ https://issues.apache.org/jira/browse/YUNIKORN-805?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Weiwei Yang resolved YUNIKORN-805.
----------------------------------
Resolution: Fixed
> Fix race condition on the TestMode flag
> ---------------------------------------
>
> Key: YUNIKORN-805
> URL: https://issues.apache.org/jira/browse/YUNIKORN-805
> Project: Apache YuniKorn
> Issue Type: Bug
> Components: shim - kubernetes
> Reporter: Weiwei Yang
> Assignee: Chen Yu Teng
> Priority: Major
> Labels: pull-request-available
> Fix For: 1.0.0
>
>
> We see the following data race while running UT:
> {code}
> ==================
> WARNING: DATA RACE
> Write at 0x00c000030168 by goroutine 18:
> github.com/apache/incubator-yunikorn-k8shim/pkg/conf.(*SchedulerConf).SetTestMode()
> /Users/chenyazhang/Chenya-Eng/incubator-yunikorn-k8shim/pkg/conf/schedulerconf.go:83 +0x8c
> github.com/apache/incubator-yunikorn-k8shim/pkg/shim.(*MockScheduler).init()
> /Users/chenyazhang/Chenya-Eng/incubator-yunikorn-k8shim/pkg/shim/scheduler_mock_test.go:58 +0x89
> github.com/apache/incubator-yunikorn-k8shim/pkg/shim.TestTaskFailures()
> /Users/chenyazhang/Chenya-Eng/incubator-yunikorn-k8shim/pkg/shim/scheduler_test.go:194 +0x89
> testing.tRunner()
> /usr/local/go/src/testing/testing.go:1193 +0x202
> Previous read at 0x00c000030168 by goroutine 16:
> github.com/apache/incubator-yunikorn-k8shim/pkg/shim.(*KubernetesShim).handleSchedulerFailure()
> /Users/chenyazhang/Chenya-Eng/incubator-yunikorn-k8shim/pkg/shim/scheduler.go:149 +0xa4
> github.com/apache/incubator-yunikorn-k8shim/pkg/shim.(*KubernetesShim).handleSchedulerFailure-fm()
> /Users/chenyazhang/Chenya-Eng/incubator-yunikorn-k8shim/pkg/shim/scheduler.go:147 +0x54
> github.com/looplab/fsm.(*FSM).afterEventCallbacks()
> /Users/chenyazhang/go/pkg/mod/github.com/looplab/fsm@v0.1.0/fsm.go:414 +0x196
> github.com/looplab/fsm.(*FSM).Event.func1()
> /Users/chenyazhang/go/pkg/mod/github.com/looplab/fsm@v0.1.0/fsm.go:309 +0xdc
> github.com/looplab/fsm.transitionerStruct.transition()
> /Users/chenyazhang/go/pkg/mod/github.com/looplab/fsm@v0.1.0/fsm.go:354 +0xc7
> github.com/looplab/fsm.(*transitionerStruct).transition()
> <autogenerated>:1 +0x2e
> github.com/looplab/fsm.(*FSM).doTransition()
> /Users/chenyazhang/go/pkg/mod/github.com/looplab/fsm@v0.1.0/fsm.go:339 +0x6b9
> github.com/looplab/fsm.(*FSM).Event()
> /Users/chenyazhang/go/pkg/mod/github.com/looplab/fsm@v0.1.0/fsm.go:321 +0x685
> github.com/apache/incubator-yunikorn-k8shim/pkg/shim.(*KubernetesShim).handle()
> /Users/chenyazhang/Chenya-Eng/incubator-yunikorn-k8shim/pkg/shim/scheduler.go:241 +0x244
> github.com/apache/incubator-yunikorn-k8shim/pkg/shim.(*KubernetesShim).SchedulerEventHandler.func1()
> /Users/chenyazhang/Chenya-Eng/incubator-yunikorn-k8shim/pkg/shim/scheduler.go:125 +0x14c
> github.com/apache/incubator-yunikorn-k8shim/pkg/dispatcher.Start.func1()
> /Users/chenyazhang/Chenya-Eng/incubator-yunikorn-k8shim/pkg/dispatcher/dispatcher.go:196 +0x60c
> Goroutine 18 (running) created at:
> testing.(*T).Run()
> /usr/local/go/src/testing/testing.go:1238 +0x5d7
> testing.runTests.func1()
> /usr/local/go/src/testing/testing.go:1511 +0xa6
> testing.tRunner()
> /usr/local/go/src/testing/testing.go:1193 +0x202
> testing.runTests()
> /usr/local/go/src/testing/testing.go:1509 +0x612
> testing.(*M).Run()
> /usr/local/go/src/testing/testing.go:1417 +0x3b3
> main.main()
> _testmain.go:101 +0x356
> Goroutine 16 (running) created at:
> github.com/apache/incubator-yunikorn-k8shim/pkg/dispatcher.Start()
> /Users/chenyazhang/Chenya-Eng/incubator-yunikorn-k8shim/pkg/dispatcher/dispatcher.go:184 +0xa8
> github.com/apache/incubator-yunikorn-k8shim/pkg/shim.(*KubernetesShim).run()
> /Users/chenyazhang/Chenya-Eng/incubator-yunikorn-k8shim/pkg/shim/scheduler.go:269 +0x64
> github.com/apache/incubator-yunikorn-k8shim/pkg/shim.TestSchedulerRegistrationFailed()
> /Users/chenyazhang/Chenya-Eng/incubator-yunikorn-k8shim/pkg/shim/scheduler_test.go:165 +0x20d
> testing.tRunner()
> /usr/local/go/src/testing/testing.go:1193 +0x202
> ==================
> {code}
> conf.TestMode can be modified during the test, to avoid race conditions, we should provide a IsTestMode function in the conf object with the R lock protected.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@yunikorn.apache.org
For additional commands, e-mail: dev-help@yunikorn.apache.org