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



Halfway reviewing. Posting some comments first.


src/common/resources_utils.cpp
Lines 199-261 (patched)
<https://reviews.apache.org/r/66050/#comment280261>

    We should not speculatively carve out the conversion here. Let's wait for 
the `UpdateOperationStatusMessage` and get the converted resource instead.



src/master/master.cpp
Line 4018 (original), 4018 (patched)
<https://reviews.apache.org/r/66050/#comment280263>

    "If an operation other than LAUNCH and LAUNCH_GROUP contains invalid 
resources,"



src/master/master.cpp
Lines 4837 (patched)
<https://reviews.apache.org/r/66050/#comment280264>

    Let check the agent capabilities here:
    ```
    if (!slave->capabilities.resourceProvider) {
      drop(framework,
           operation,
           "Not supported on agent " + stringify(*slave) +
           " because it does not have RESOURCE_PROVIDER capability");
      continue;
    }
    ```



src/master/validation.cpp
Lines 2328 (patched)
<https://reviews.apache.org/r/66050/#comment280278>

    s/grow/growVolume/ for consistency.



src/master/validation.cpp
Lines 2354 (patched)
<https://reviews.apache.org/r/66050/#comment280282>

    Let's do the following in order.
    
    First, general validations:
    - `resource::validate(grow.volume())` (The check is not included in 
`validatePersistentVolume`)
    - `resource::validate(grow.addition())`
    - `!isPersistentVolume(grow.addition())`
    
    Second, reject RP resources:
    ``` 
    if (Resources::hasResourceProvider(grow.volume())) {
      return Error("Growing a volume from a resource provider is not 
supported");
    }
    ```
    
    Third, validations specific to agent default resources:
    - Validations for `grow.volume()`:
      1) `resource::validatePersistentVolume(grow.volume())`
      2) `!Resources::isShared(grow.volume())
      3) `checkpointedResources.contains(unallocated(grow.volume()))`
      4) `!unallocated(usedResources).contains(unallocated(grow.volume()))`
    
    - Validations for `grow.addition()`:
      1) `!Resources::hasResourceProvider(grow.addition())`
      2) `checkpointedResources.contains(unallocated(grow.addition()))`
      3) `!unallocated(usedResources).contains(unallocated(grow.addition())`
     
    Alternatively, the containment checks for `checkpointedResources` and 
`usedResources` could be put together if that makes the code easier to read. 
Also if `checkpointedResources` or `usedResources` contains RP resources, we 
cloud move the checks to the first section. (I think that's not the case for 
`checkpointedResources` but need double check.)
    
    I'm not sure if we need to check if `pendingTasks` contains the resources 
to be consumed. Wouldn't this be validated later when validating `LAUNCH` or 
`LAUNCH_GROUP`?
    
    Finally, for agent default resources, we coulde exercise `addable()` to 
validate if the two resources are compatible:
    ```
    Resources stripped = grow.volume();
    if (stripped.disk.has_source()) {
      stripped.mutable_disk()->clear_persistence();
      stripped.mutable_disk()->clear_volume();
    }
    
    if ((stripped + grow.addition()).size() != 1) {
      return Error("Incompatible resources in the 'volume' and 'addition' 
field");
    }
    ```



src/master/validation.cpp
Lines 2372 (patched)
<https://reviews.apache.org/r/66050/#comment280275>

    "Growing a shared persistent volume is not supported"


- Chun-Hung Hsiao


On March 22, 2018, 4:27 p.m., Zhitao Li wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/66050/
> -----------------------------------------------------------
> 
> (Updated March 22, 2018, 4:27 p.m.)
> 
> 
> Review request for mesos, Chun-Hung Hsiao and Gaston Kleiman.
> 
> 
> Bugs: MESOS-4965
>     https://issues.apache.org/jira/browse/MESOS-4965
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> The new offer operations are implemented as non-speculative operations,
> which means they cannot be chained with previous offer operations which
> depend on results of each other.
> 
> 
> Diffs
> -----
> 
>   src/common/protobuf_utils.cpp 2acdc798200e82d14651b1edcc5f83e174477d53 
>   src/common/resources_utils.cpp 9be01c1abd48264e308960f35cc7c2ee8a367518 
>   src/master/master.cpp 390fbe9fe71981101ed2bd9a1f1b21b0e3727b7b 
>   src/master/validation.hpp 7c129ceb929596acbb64d37025e055661277e6bf 
>   src/master/validation.cpp 9254cd22e67d9aca53135701575fb0857ff6f7d6 
>   src/slave/slave.cpp e76daabad0d2d68aa42d1da809d4a23459eaaacb 
>   src/tests/mesos.hpp 2c3d0c9350bbbbcd2223ff20c0797d1849d38c19 
>   src/tests/persistent_volume_tests.cpp 
> 924d8458e54e34a49c99593482b5908c5f7c7a48 
>   src/tests/reservation_tests.cpp 8d8e9c8390e65187269bd194bb322bbdff88e0bd 
> 
> 
> Diff: https://reviews.apache.org/r/66050/diff/5/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Zhitao Li
> 
>

Reply via email to