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



Looks good, the second allocation loop is starting to look pretty succinct!

Just a few questions about the logic below


src/master/allocator/mesos/hierarchical.hpp
Lines 687 (patched)
<https://reviews.apache.org/r/67827/#comment288668>

    s/ based on the ..././
    
    Or this might be clearer?
    
    // Returns the subset of resources that the framework
    // is capable of being offered.



src/master/allocator/mesos/hierarchical.cpp
Lines 1768-1772 (original), 1768-1770 (patched)
<https://reviews.apache.org/r/67827/#comment288670>

    Hm.. do we need the if condition? Can't this just be:
    
    ```
    available -= offeredSharedResources.get(slaveId).getOrElse(Resources());
    ```



src/master/allocator/mesos/hierarchical.cpp
Line 1930 (original), 1912-1914 (patched)
<https://reviews.apache.org/r/67827/#comment288671>

    Hm.. this looks like a no-op change?



src/master/allocator/mesos/hierarchical.cpp
Lines 1998-2003 (original), 1982-1984 (patched)
<https://reviews.apache.org/r/67827/#comment288673>

    Ditto here



src/master/allocator/mesos/hierarchical.cpp
Line 2083 (original), 2044-2046 (patched)
<https://reviews.apache.org/r/67827/#comment288672>

    Ditto here



src/master/allocator/mesos/hierarchical.cpp
Lines 2660-2685 (patched)
<https://reviews.apache.org/r/67827/#comment288676>

    Should we re-write this now to just consistently use filter()?
    
    ```
    Resources HierarchicalAllocatorProcess::stripIncapableResources(
        const Resources& resources, // Can take a const ref now?
        const protobuf::framework::Capabilities& frameworkCapabilities) const
    {
      return resources.filter([&](const Resource& resource) {
        if (!frameworkCapabilities.sharedResources &&
            Resources::isShared(resource)) {
          return false;
        }
        
        if (!frameworkCapabilities.revocableResources &&
            Resources::isRevocable(resource)) {
          return false;
        }
        
        // When reservation refinements are present, old frameworks without the
        // RESERVATION_REFINEMENT capability won't be able to understand the
        // new format. While it's possible to translate the refined reservations
        // into the old format by "hiding" the intermediate reservations in the
        // "stack", this leads to ambiguity when processing RESERVE / UNRESERVE
        // operations. This is due to the loss of information when we drop the
        // intermediate reservations. Therefore, for now we simply filter out
        // resources with refined reservations if the framework does not have
        // the capability.
        if (!frameworkCapabilities.reservationRefinement &&
            Resources::hasRefinedReservations(resource)) {
          return false;
        }
        
        return true;
      });
    }
    ```
    
    I think this approach avoids adding extra copyies as we add more cases?


- Benjamin Mahler


On July 4, 2018, 1:01 a.m., Meng Zhu wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/67827/
> -----------------------------------------------------------
> 
> (Updated July 4, 2018, 1:01 a.m.)
> 
> 
> Review request for mesos and Benjamin Mahler.
> 
> 
> Bugs: MESOS-8916
>     https://issues.apache.org/jira/browse/MESOS-8916
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> This helper removes any resources that the framework is not
> capable of receiving based on the given framework capability.
> 
> 
> Diffs
> -----
> 
>   src/master/allocator/mesos/hierarchical.hpp 
> 0f6c0e96a105c64465d3f5db4ff663d8fdfe7e26 
>   src/master/allocator/mesos/hierarchical.cpp 
> 5a6cd3d2fc5bdbaaee2d05b9be9e83d4107c749b 
> 
> 
> Diff: https://reviews.apache.org/r/67827/diff/1/
> 
> 
> Testing
> -------
> 
> make check
> 
> 
> Thanks,
> 
> Meng Zhu
> 
>

Reply via email to