-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/24078/
-----------------------------------------------------------
(Updated Aug. 1, 2014, 9:50 p.m.)
Review request for Aurora, David McLaughlin, Kevin Sweeney, and Maxim
Khutornenko.
Bugs: AURORA-621
https://issues.apache.org/jira/browse/AURORA-621
Repository: aurora
Description
-------
Note: this is one part of the epic AURORA-610, and is currently unwired code.
This implements the logic to initiate a change from a possibly-absent current
task state to a possibly-absent desired state. I worked with Maxim on this,
and we started with a state machine approach. After some more careful thought,
i pushed for a convergence function, which is implemented here.
There are a few invariants assumed/designed here, which i've called out in the
javadoc for evaluate().
The caller of this function will be responsible for implementing the
TaskController interface. As for integration, this will mean:
- maintaining one InstanceUpdater for each in-flight instance update
- subscribing to task pubsub events and routing them to the appropriate
InstanceUpdater's evaluate()
- discarding terminal InstanceUpdaters (those which have called
TaskController#updateCompleted())
- scheduling delayed calls to evaluate() based on the job's update parameters
My advice for reviewing is to first scan the evaluate() function (without
skipping out to helper functions), then dive into
handleActualAndDesiredPresent(). Think of evaluate() as something that may be
called arbitrarily, and attempts to gracefully move a task from the actual
state to the desired state. Next, look at the unit test to see how the calls
should look to turn this function into an event-driven convergence function.
Diffs (updated)
-----
src/main/java/org/apache/aurora/scheduler/updater/InstanceUpdater.java
PRE-CREATION
src/main/java/org/apache/aurora/scheduler/updater/TaskController.java
PRE-CREATION
src/test/java/org/apache/aurora/scheduler/updater/InstanceUpdaterTest.java
PRE-CREATION
Diff: https://reviews.apache.org/r/24078/diff/
Testing
-------
./gradlew build -Pq, 100% instruction and branch test coverage.
Thanks,
Bill Farner