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