> On Sept. 11, 2014, 10:13 p.m., Joshua Cohen wrote:
> > src/main/java/org/apache/aurora/scheduler/updater/InstanceActionHandler.java,
> >  line 111
> > <https://reviews.apache.org/r/25529/diff/1/?file=685011#file685011line111>
> >
> >     Instead of embedding the logic into a switch here, would it make sense 
> > to make InstanceAction an actual class that encapsulates the logic/defines 
> > an interface around performing these actions?

A fine suggestion!  It resulted in more code, but it's overall cleaner, thanks!


> On Sept. 11, 2014, 10:13 p.m., Joshua Cohen wrote:
> > src/main/java/org/apache/aurora/scheduler/updater/InstanceActionHandler.java,
> >  line 113
> > <https://reviews.apache.org/r/25529/diff/1/?file=685011#file685011line113>
> >
> >     use instanceName here?

Nuked with switch to IInstanceKey.


> On Sept. 11, 2014, 10:13 p.m., Joshua Cohen wrote:
> > src/main/java/org/apache/aurora/scheduler/updater/InstanceActionHandler.java,
> >  line 141
> > <https://reviews.apache.org/r/25529/diff/1/?file=685011#file685011line141>
> >
> >     Should we log (or assert?) here? Are there other actions that we're 
> > intentionally not processing, or is it an error if we get an action not 
> > covered?

Goes away now that switch statement is gone.


> On Sept. 11, 2014, 10:13 p.m., Joshua Cohen wrote:
> > src/main/java/org/apache/aurora/scheduler/updater/InstanceUpdater.java, 
> > line 119
> > <https://reviews.apache.org/r/25529/diff/1/?file=685012#file685012line119>
> >
> >     Is there a ticket for this?

Whoops, that was a reminder for myself, fixed in this diff.  Removed TODO.


> On Sept. 11, 2014, 10:13 p.m., Joshua Cohen wrote:
> > src/main/java/org/apache/aurora/scheduler/updater/JobUpdateControllerImpl.java,
> >  line 141
> > <https://reviews.apache.org/r/25529/diff/1/?file=685014#file685014line141>
> >
> >     I don't know if the amount of work done by the underlying calls 
> > warrants it, but you could DRY this up a bit by having instance vars for 
> > `storeProvider.getJobUpdateStore()` (used here, and above) and 
> > `update.getSummary()` (used twice below and once above). If you wanted to 
> > go completely overboard, `update.getSummary().getJobKey()` is used above 
> > and below.

They're all accessors.  I've done a bit of collapsing, trying for a balance 
between more code and more DRY.


> On Sept. 11, 2014, 10:13 p.m., Joshua Cohen wrote:
> > src/main/java/org/apache/aurora/scheduler/updater/JobUpdateControllerImpl.java,
> >  line 159
> > <https://reviews.apache.org/r/25529/diff/1/?file=685014#file685014line159>
> >
> >     It seems like the logic of what states to transition to from a given 
> > state is somewhat spread out over the codebase (c.f. 
> > https://reviews.apache.org/r/25300/diff/#)? Is there any way we can 
> > centralize that?

Thanks, i wasn't happy with this.  I've pushed more of this down into 
JobUpdateStateMachine.


> On Sept. 11, 2014, 10:13 p.m., Joshua Cohen wrote:
> > src/main/java/org/apache/aurora/scheduler/updater/JobUpdateControllerImpl.java,
> >  line 300
> > <https://reviews.apache.org/r/25529/diff/1/?file=685014#file685014line300>
> >
> >     Thoughts on changing the Function here to be `Function<JobUpdateStatus, 
> > Optional<JobUpdateStatus>>` to clean up the null dance below?

Sure, done.  Downside is that we lose ability to use Functions.forMap().


> On Sept. 11, 2014, 10:13 p.m., Joshua Cohen wrote:
> > src/main/java/org/apache/aurora/scheduler/updater/JobUpdateControllerImpl.java,
> >  lines 484-488
> > <https://reviews.apache.org/r/25529/diff/1/?file=685014#file685014line484>
> >
> >     Do we need guards in place in case the updaterStatus here is not 
> > ROLLING_BACK or ROLLING_FORWARD (or is it guaranteed to be one of the two? 
> > If so, is there danger in the addition of additional statuses in the future 
> > rendering that assumption invalid?)

I've refactored this to eliminate the fall-through branch.  Thanks for the 
nudge!


- Bill


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


On Sept. 11, 2014, 4:53 a.m., Bill Farner wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/25529/
> -----------------------------------------------------------
> 
> (Updated Sept. 11, 2014, 4:53 a.m.)
> 
> 
> Review request for Aurora, Joshua Cohen, Kevin Sweeney, Maxim Khutornenko, 
> and Zameer Manji.
> 
> 
> Bugs: AURORA-613
>     https://issues.apache.org/jira/browse/AURORA-613
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> There's a lot going on here, i'm happy to break this up if you'd perfer, but 
> the bulk of the change (JobUpdateControllerImpl+Test) would remain.
> 
> The remaining required piece here is to record JobInstanceUpdateEvents when 
> actions are taken.
> 
> As you try to follow JobUpdateControllerImplTest, take some care to 
> understand how FakeScheduledExecutor works.  Ultimately, it accepts work 
> added to a mock, and executes that work when FakeClock is advanced past the 
> scheduled time.  It may not be obvious at first, but be glad it's there - 
> this kind of async test would be a nightmare without it.
> 
> 
> Diffs
> -----
> 
>   build.gradle 3237f8dfa3e7d4249a388042dba840a939d513b3 
>   src/main/java/org/apache/aurora/scheduler/async/RescheduleCalculator.java 
> aaa3513ae99c70ffa51fec0a241d67fb815b6d3f 
>   src/main/java/org/apache/aurora/scheduler/base/Jobs.java 
> 7b10cf876d4424fab06113aa3e2989a6bef4d346 
>   src/main/java/org/apache/aurora/scheduler/base/Query.java 
> d8572bb21a92025e7a51cf18d5bdf00fc1281078 
>   src/main/java/org/apache/aurora/scheduler/base/Tasks.java 
> 1be16374aeebaee59063aec982690ffa1fbdcf0f 
>   src/main/java/org/apache/aurora/scheduler/state/LockManagerImpl.java 
> 8befecaf4f13c0b890b452bc7b9c0618725b8c41 
>   src/main/java/org/apache/aurora/scheduler/storage/ForwardingStore.java 
> b894a71348d2d71c077f35bb21a80ba88a6b4c42 
>   src/main/java/org/apache/aurora/scheduler/storage/JobUpdateStore.java 
> 599dbd8bb762d051b75aa1a1e4d6a4c90ca6eb87 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DBJobUpdateStore.java 
> ec9b37ccaf03651e986aab9b4541f17ff0540008 
>   
> src/main/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterface.java
>  a43e5d7748c22d60f56f03a8a3d52949faebeff2 
>   
> src/main/java/org/apache/aurora/scheduler/updater/InstanceActionHandler.java 
> PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/updater/InstanceUpdater.java 
> d725bc356178f51464b4d8ea896f1bf76815e1b2 
>   src/main/java/org/apache/aurora/scheduler/updater/JobUpdateController.java 
> 39bdca02295706714cf720545ffc291f9042702a 
>   
> src/main/java/org/apache/aurora/scheduler/updater/JobUpdateControllerImpl.java
>  3f542ce3e45ec4561238736f4ce84b69f7e41219 
>   
> src/main/java/org/apache/aurora/scheduler/updater/JobUpdateEventSubscriber.java
>  7be792f0bc9c5ec14c7001cb243a17d643f9607f 
>   
> src/main/java/org/apache/aurora/scheduler/updater/JobUpdateStateMachine.java 
> 037602d6aabe6dda978cad008075c053e2c042eb 
>   src/main/java/org/apache/aurora/scheduler/updater/OneWayJobUpdater.java 
> d6a1e4b2c916b1c4dbcc73fe79bd672fca9b3189 
>   
> src/main/java/org/apache/aurora/scheduler/updater/OneWayJobUpdaterFactory.java
>  80baa7f9360cc8b2bf7910c26d119d443d6cbbf9 
>   
> src/main/java/org/apache/aurora/scheduler/updater/UpdateConfigurationException.java
>  PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/updater/UpdaterModule.java 
> 028cb079316ca48bb93a35913ae25ace78088fb4 
>   
> src/main/java/org/apache/aurora/scheduler/updater/strategy/ActiveLimitedStrategy.java
>  8298ea2283298daa71de4d958ca6bb0898d47531 
>   
> src/main/java/org/apache/aurora/scheduler/updater/strategy/BatchStrategy.java 
> a3e666e85993b833a4765ce0ad5f4825dc9253e8 
>   
> src/main/java/org/apache/aurora/scheduler/updater/strategy/QueueStrategy.java 
> 0cf36839dbf64ad755383bef829e14fd94a97e30 
>   src/main/thrift/org/apache/aurora/gen/api.thrift 
> c00f94371a27ffab41188b22f81bb1c8ec7a57e9 
>   
> src/test/java/org/apache/aurora/scheduler/storage/db/DBJobUpdateStoreTest.java
>  0be4d78dd737b34f8a58276be9ffd7aeaa7f95bb 
>   
> src/test/java/org/apache/aurora/scheduler/thrift/SchedulerThriftInterfaceTest.java
>  0d51f7dc367081f72090736e36605bf363f3395e 
>   
> src/test/java/org/apache/aurora/scheduler/updater/FakeScheduledExecutor.java 
> PRE-CREATION 
>   
> src/test/java/org/apache/aurora/scheduler/updater/InstanceActionHandlerTest.java
>  PRE-CREATION 
>   src/test/java/org/apache/aurora/scheduler/updater/InstanceUpdaterTest.java 
> f38e6a3e6a798b1c78d73c6d19404156eb6d8c91 
>   
> src/test/java/org/apache/aurora/scheduler/updater/JobUpdateEventSubscriberTest.java
>  41274421aaae30b43abc3da15a63276a941094f9 
>   
> src/test/java/org/apache/aurora/scheduler/updater/JobUpdateStateMachineTest.java
>  6eed641895123d21ed760fa755ce7b30cec3fd44 
>   src/test/java/org/apache/aurora/scheduler/updater/JobUpdaterIT.java 
> PRE-CREATION 
>   
> src/test/java/org/apache/aurora/scheduler/updater/OneWayJobUpdateControllerTest.java
>  f0b68350ea39e5925a911e46532982c3d61ee0d6 
>   
> src/test/java/org/apache/aurora/scheduler/updater/OneWayJobUpdaterFactoryImplTest.java
>  ae654625370fd3ba8be59b9a37ba343ec7115cba 
>   
> src/test/java/org/apache/aurora/scheduler/updater/strategy/BatchStrategyTest.java
>  e6742dcbe101389710c11e9b75a508f7b61ffe49 
>   
> src/test/java/org/apache/aurora/scheduler/updater/strategy/QueueStrategyTest.java
>  f9a2806708ea1a06a4f0ebe118c777fd9dbe2dcc 
> 
> Diff: https://reviews.apache.org/r/25529/diff/
> 
> 
> Testing
> -------
> 
> ./gradlew build -Pq
> 
> Jacoco reports 98% line coverage, 96% branch coverage for the updater package.
> 
> 
> Thanks,
> 
> Bill Farner
> 
>

Reply via email to