You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@yunikorn.apache.org by "Wilfred Spiegelenburg (Jira)" <ji...@apache.org> on 2022/03/17 01:10:00 UTC

[jira] [Resolved] (YUNIKORN-1121) MockScheduler addTask ignores resource settings

     [ https://issues.apache.org/jira/browse/YUNIKORN-1121?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Wilfred Spiegelenburg resolved YUNIKORN-1121.
---------------------------------------------
    Fix Version/s: 1.0.0
       Resolution: Fixed

change committed: one container will be added to the task with the resources set to the ask

> MockScheduler addTask ignores resource settings
> -----------------------------------------------
>
>                 Key: YUNIKORN-1121
>                 URL: https://issues.apache.org/jira/browse/YUNIKORN-1121
>             Project: Apache YuniKorn
>          Issue Type: Bug
>          Components: shim - kubernetes
>            Reporter: Wilfred Spiegelenburg
>            Assignee: Craig Condit
>            Priority: Major
>              Labels: newbie, pull-request-available
>             Fix For: 1.0.0
>
>
> Reviewing YUNIKORN-1105 I found a bug in the mock scheduler…
> Looking through the changes I saw files being changed that I thought would not require any changes. I ran the tests and they failed without the change. I was wondering why we were seeing those failures. I ran the tests in the debugger without the changes that I thought were unneeded and saw weird things.
> The problem is here:
> {code:java}
> func (fc *MockScheduler) addTask(appID string, taskID string, ask *si.Resource){code}
> Is hopelessly broken. The ask that gets passed in is completely ignored. That means every task that was created always was interpreted as a {{_PodQOSBestEffort_}} __ and got memory set to 1 which used to be 1M. Now that we fixed things it gets set to 1,000,000 or the real 1M.
> The breakage is triggered by the function in the resource code which does the right thing:
> {code:java}
> func GetPodResource(pod *v1.Pod) (resource *si.Resource){code}
> In the old setup as long as the memory for best effort (i.e. 1) was smaller than the resource set for the task things would just pass without an issue. Since 1 was the smallest possible it would always work. Accounting on nodes etc was most likely way off but none of these tests checked that anyway.
> This causes *all* tests that use resources within a Task using the mock scheduler to not test the real thing, not even close.
> It also hinders us from testing failure cases. We can never create a task that does not fit on a node as an example unless the node is full.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@yunikorn.apache.org
For additional commands, e-mail: issues-help@yunikorn.apache.org