brian wickman created MESOS-692:
-----------------------------------

             Summary: 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


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 is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to