Benjamin Mahler created MESOS-8389:
--------------------------------------

             Summary: Notion of "removable" task in master code is inaccurate.
                 Key: MESOS-8389
                 URL: https://issues.apache.org/jira/browse/MESOS-8389
             Project: Mesos
          Issue Type: Improvement
          Components: master
            Reporter: Benjamin Mahler


In the past, the notion of a "removable" task meant: the task is terminal and 
acknowledged. It appears now that a removable task is defined purely by its 
state (terminal or unreachable) but not whether the terminal update is 
acknowledged.

As a result, the code that is calling this function ({{isRemovable}}) ends up 
being unintuitive. One example of a confusing piece of code is within 
{{updateTask}}. Here, we have logic which says, if the task is removable, 
recover the resources *but don't remove it*. This seems more intuitive if 
directly described as: "if the task is no longer consuming resources, then 
(e.g. transitioned to terminal or unreachable) then recover the resources".

If one looks up the documentation of {{isRemovable}}, it says "When a task 
becomes removable, it is erased from the master's primary task data 
structures", but that isn't accurate since this function doesn't say whether 
the terminal task has been acknowledged, which is required for a task to be 
removable.

I think an easy improvement here would be to move this notion of removable 
towards something like {{isTerminalOrUnreachable}}. We could also think about 
how to name this concept more generally, like {{canReleaseResources}} to 
describe whether the task's resources are considered allocated.

If we do introduce a notion of {{isRemovable}}, it seems it should be saying 
whether the task could be removed from the master, which includes checking that 
terminal tasks have been acknowledged.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to