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