You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mesos.apache.org by "Benjamin Mahler (JIRA)" <ji...@apache.org> on 2014/05/17 01:21:52 UTC

[jira] [Updated] (MESOS-692) reservations are reported incorrectly in master's state.json

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

Benjamin Mahler updated MESOS-692:
----------------------------------

    Fix Version/s:     (was: 0.19.0)

> reservations are reported incorrectly in master's state.json
> ------------------------------------------------------------
>
>                 Key: MESOS-692
>                 URL: https://issues.apache.org/jira/browse/MESOS-692
>             Project: Mesos
>          Issue Type: Bug
>          Components: master
>            Reporter: brian wickman
>            Assignee: Dominic Hamon
>              Labels: newbie
>
> When you dump state.json from the master, it lists out a single resources dict, e.g.
> {noformat}
> >>> state['slaves'][0]
> {..., u'registered_time': 1378851991.87182, u'reregistered_time': 1378917907.3190701, u'id': u'201309042122-1937777162-5050-55755-120', u'resources': {u'mem': 21913, u'disk': 400000, u'cpus': 14, u'ports': u'[31000-32000]'}}
> {noformat}
> Looking at the code, it looks like last value wins:
> {noformat}
> // Returns a JSON object modeled on a Resources.
> JSON::Object model(const Resources& resources)
> {
>   JSON::Object object;
>   foreach (const Resource& resource, resources) {
>     switch (resource.type()) {
>       case Value::SCALAR:
>         object.values[resource.name()] = resource.scalar().value();
>         break;
>       case Value::RANGES:
>         object.values[resource.name()] = stringify(resource.ranges());
>         break;
>       case Value::SET:
>         object.values[resource.name()] = stringify(resource.set());
>         break;
>       default:
>         LOG(FATAL) << "Unexpected Value type: " << resource.type();
>         break;
>     }
>   }
>   return object;
> }
> {noformat}
> So for example if you had role * with 15 cores and role "hdfs" with 1 cores, the resource dict might just report 1 core.  Instead it should probably aggregate resources by role, and have resources = {'*': {ram, cpu, disk}, 'hdfs': {ram, cpu, disk}} etc.



--
This message was sent by Atlassian JIRA
(v6.2#6252)