> On March 17, 2016, 2:27 a.m., Greg Mann wrote: > > src/examples/dynamic_reservation_framework.cpp, line 119 > > <https://reviews.apache.org/r/37168/diff/12/?file=1300732#file1300732line119> > > > > Could you clarify for me how the slave gets into the RESERVED state the > > first time? It seems to me we should have something here similar to what's > > in the switch for `State::UNRESERVING`, i.e., check the offer and see if > > the reserved resources are contained in it? The framework test passes for > > me though, so it seems to be working nonetheless?
Good catch! I think I missed `updateState(dispatched, offer.slave_id(), State::RESERVED);` just before launching task; it works because both `State::RESERVED` and `State::RESERVING` are using the same logic. When slave transfer from `State::RESERVING` to `State::RESERVED`, it's better to launch tasks directly; otherwise, we have to wait for another allocation interval to launch task. I used to try following code to seperate action in those two state, but `case State::RESERVING:` without `break;` is not a good style :). ``` case State::RESERVING: { Resources resources = offer.resources(); Resources reserved = resources.reserved(role); if (reserved.contains(taskResources)) { updateState(dispatched, offer.slave_id(), State::RESERVED); } } // NOTE: No `break;`. Launch task after transfering to // `State::RESERVED`. case State::RESERVED: { if (tasksLaunched == totalTasks) { // If all tasks were launched, unreserve those resources. Try<Nothing> reserved = unreserveResources(driver, offer); updateState(reserved, offer.slave_id(), State::UNRESERVING); } else if (tasksLaunched < totalTasks) { // Framework dispatches task on the reserved resources. Try<Nothing> dispatched = dispatchTasks(driver, offer); updateState(dispatched, offer.slave_id(), State::TASK_RUNNING); } } break; ``` - Klaus ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/37168/#review123903 ----------------------------------------------------------- On March 16, 2016, 2:32 p.m., Klaus Ma wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/37168/ > ----------------------------------------------------------- > > (Updated March 16, 2016, 2:32 p.m.) > > > Review request for mesos, Greg Mann, Joerg Schad, and Michael Park. > > > Bugs: MESOS-3063 > https://issues.apache.org/jira/browse/MESOS-3063 > > > Repository: mesos > > > Description > ------- > > Provide example for dynamic reservation features. > > > Diffs > ----- > > src/Makefile.am 9dd21b56af0500f7125b07bf535b45fe5c544aaf > src/examples/dynamic_reservation_framework.cpp PRE-CREATION > src/tests/dynamic_reservation_framework_test.sh PRE-CREATION > src/tests/examples_tests.cpp 6ddac17bb2ac0330bcc09eaab975ae70e84a7695 > > Diff: https://reviews.apache.org/r/37168/diff/ > > > Testing > ------- > > make > make check > > > Thanks, > > Klaus Ma > >