> On Jan. 30, 2017, 8:12 a.m., Benjamin Bannier wrote:
> > include/mesos/allocator/allocator.hpp, lines 89-92
> > <https://reviews.apache.org/r/55870/diff/1/?file=1615402#file1615402line89>
> >
> >     What is the reason for changing this interface? We should think hard 
> > before making it too specific to requirements from single features such as 
> > `MULTI_ROLE`.
> >     
> >     Propagating internal assumptions such as "only allocations towards the 
> > same role in one `Resources`" across module boundaries really limits room 
> > for future developments. In this case both our allocator and the master 
> > rely on above assumption; it should be possible for them to adjust passed 
> > resources on interfaces, e.g., by creating datastructure like you proposed 
> > here internally themself (they could use the same helper function). That 
> > way we could avoid tech debt spilling into interfaces.

I can sympathize with this position, although it doesn't seem terrible to me 
that
the notion of multi-role which is being introduced to Mesos (rather than a 
specific allocator)
changes the allocator API.

But it doesn't seem obvious to me why it should be `hashmap<string, 
hashmap<SlaveID, Resources>>`,
as opposed to `hashmap<SlaveID, hashmap<string, Resources>>`. I tried to look 
through the code
briefly to see if it happens to make the code a lot simpler or something, but I 
don't really see one..

It seems to me like the pattern I see in a few places could be used here 
without changing the API also.

```cpp
const hashmap<SlaveID, Resources>& resources;

foreachpair (const SlaveID& slaveId, const Resources& resources) {
  foreachpair (const string& role,
               const Resources& resources,
               resources.allocation()) {
    // ...
  }
}
```

I'm more-so trying to understand what the reasoning is here.


- Michael


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/55870/#review163516
-----------------------------------------------------------


On Jan. 25, 2017, 1:55 p.m., Benjamin Mahler wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/55870/
> -----------------------------------------------------------
> 
> (Updated Jan. 25, 2017, 1:55 p.m.)
> 
> 
> Review request for mesos, Benjamin Bannier, Jay Guo, Guangya Liu, and Michael 
> Park.
> 
> 
> Bugs: MESOS-6635
>     https://issues.apache.org/jira/browse/MESOS-6635
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> The allocator now sets `Resource.AllocationInfo` when performing
> an allocation, and the interface is updated to expose allocations
> for each role within a framework.
> 
> The allocator also assumes that `Resource.AllocationInfo` is set
> for inbound resources that are allocated (e.g. when adding an agent,
> when adding a framework, when recovering resources). Note however,
> that the necessary changes to the master and agent to enforce this
> will be done via separate patches.
> 
> 
> Diffs
> -----
> 
>   include/mesos/allocator/allocator.hpp 
> 558594983beb6ff49c1fddf875ba29c1983b1288 
>   src/master/allocator/mesos/allocator.hpp 
> 8e0f37a5eedd4d71d765991c0039b49c96f0ca53 
>   src/master/allocator/mesos/hierarchical.hpp 
> 9b66c23f26b37c02ed850c06c4518ea99078b02d 
>   src/master/allocator/mesos/hierarchical.cpp 
> c2211be7458755aeb91ef078e4bfe92ac474044a 
>   src/master/master.hpp 8e8a9037af11cf95961b6498540a0fd486ed091b 
>   src/master/master.cpp 73159328ce3fd838e02eba0e6a30cf69efc319ba 
>   src/tests/allocator.hpp 1f9261d1e7afa027bebc07915ba3e871a58e6558 
> 
> Diff: https://reviews.apache.org/r/55870/diff/
> 
> 
> Testing
> -------
> 
> Adjustments to existing tests are split out into a subsequent patch.
> 
> New tests for frameworks having multiple roles will be added as a follow up.
> 
> 
> Thanks,
> 
> Benjamin Mahler
> 
>

Reply via email to