> On April 17, 2015, 5:59 p.m., Bill Farner wrote:
> > src/main/java/org/apache/aurora/scheduler/async/preemptor/PendingTaskProcessor.java,
> >  lines 142-144
> > <https://reviews.apache.org/r/32597/diff/5/?file=931268#file931268line142>
> >
> >     ```
> >     Set<String> allSlaves = Sets.newHashSet(Iterables.concat(
> >         slavesToOffers.keySet(),
> >         slavesToActiveTasks.keySet()));
> >     ```
> 
> Maxim Khutornenko wrote:
>     Not opposed to the change but how is this better exactly? The way it's 
> currently written will iterate over all available slaves only once whereas 
> the proposed change will have to do it twice (at least the way I read it).

Are you assuming that `Iterables.concat` eagerly iterates over the inputs?  If 
so, that is false:

http://docs.guava-libraries.googlecode.com/git-history/release/javadoc/com/google/common/collect/Iterables.html#concat(java.lang.Iterable...)

I prefer the snippet i've posted since it uses a single statement for a single 
logical entity.  Of course, if that has the side-effect of signifcantly worse 
performance, it is not worth it.


> On April 17, 2015, 5:59 p.m., Bill Farner wrote:
> > src/test/java/org/apache/aurora/scheduler/async/preemptor/PendingTaskProcessorTest.java,
> >  line 96
> > <https://reviews.apache.org/r/32597/diff/5/?file=931276#file931276line96>
> >
> >     Should have brought this up in a previous review, but i'm uncomfortable 
> > with using a mock to control the behavior of a data structure.  It really 
> > feels like the test knows way too much about the internals of the class at 
> > this point, given that this is internally-managed state.  Is there any 
> > particular reason we shouldn't use a concrete `BiCache` instance here?
> 
> Maxim Khutornenko wrote:
>     Refactored to use concrete instance.

Thanks!!


> On April 17, 2015, 5:59 p.m., Bill Farner wrote:
> > src/main/java/org/apache/aurora/scheduler/async/preemptor/PendingTaskProcessor.java,
> >  line 184
> > <https://reviews.apache.org/r/32597/diff/5/?file=931268#file931268line184>
> >
> >     It's probably not worth changing code, but might be worth noting that 
> > this breaks round-robin, since the position is reset.
> 
> Maxim Khutornenko wrote:
>     Not sure what you mean. The whole reason to have a consuming iterator 
> here is to ensure the position is not reset when unsatisfiable groups are 
> removed.

Aha, thanks - it slipped my mind that the consuming iterator and removeAll were 
affecting the same data.  You're right.


- Bill


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


On April 21, 2015, 1:12 a.m., Maxim Khutornenko wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/32597/
> -----------------------------------------------------------
> 
> (Updated April 21, 2015, 1:12 a.m.)
> 
> 
> Review request for Aurora, Bill Farner and Zameer Manji.
> 
> 
> Bugs: AURORA-1219
>     https://issues.apache.org/jira/browse/AURORA-1219
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> This is addressing the preemption efficiency loss due to making preemptor 
> async. Summary:
> - Implemented fair task processing by evaluating pending task groups in 
> round-robin fashion (e.g.: {G1:3, G2:2} -> {G1, G2, G1, G2, G1}) against all 
> available slaves.
> - Moved relevant functionality from PreemptionSlotFinder (now 
> PreemptionVictimFilter) into PendingTaskProcessor.
> 
> The bulk of new functionality is in PendingTaskIterator and 
> PendingTaskProcessor. The rest is refactoring to adjust to the new traversal 
> approach.
> 
> 
> Diffs
> -----
> 
>   
> src/main/java/org/apache/aurora/scheduler/async/preemptor/PendingTaskProcessor.java
>  00919b7910704c5025465e1071378a978e5e60a3 
>   
> src/main/java/org/apache/aurora/scheduler/async/preemptor/PreemptionProposal.java
>  PRE-CREATION 
>   
> src/main/java/org/apache/aurora/scheduler/async/preemptor/PreemptionSlotFinder.java
>  f16f964f56f0f9da523950891293083f1bd86780 
>   src/main/java/org/apache/aurora/scheduler/async/preemptor/Preemptor.java 
> 5200811ec8fe6fedf42ae2712f29051a8c0bf4a9 
>   
> src/main/java/org/apache/aurora/scheduler/async/preemptor/PreemptorMetrics.java
>  dc7eb4421ff305dca32f36c83605c2864fea8b11 
>   
> src/main/java/org/apache/aurora/scheduler/async/preemptor/PreemptorModule.java
>  7cea881a8c3c11142bd04b3c794cd86a310b15e7 
>   src/main/java/org/apache/aurora/scheduler/base/TaskGroupKey.java 
> 6af3949b85297043640edccc1a490906c0fcff6c 
>   src/test/java/org/apache/aurora/scheduler/app/SchedulerIT.java 
> 7bb1e7a9f27088636d6549c089b1d079dfeaf2ee 
>   
> src/test/java/org/apache/aurora/scheduler/async/preemptor/PendingTaskProcessorTest.java
>  8a9a3b7d9686e29632f4e267f591cdb19826e0e7 
>   
> src/test/java/org/apache/aurora/scheduler/async/preemptor/PreemptorImplTest.java
>  64283fab8c61b841007d7c0a02b083b3067bc78d 
>   
> src/test/java/org/apache/aurora/scheduler/async/preemptor/PreemptorSlotFinderTest.java
>  eed2de99a145dd2124b7f2b4d401214f1d8adf2e 
> 
> Diff: https://reviews.apache.org/r/32597/diff/
> 
> 
> Testing
> -------
> 
> ./gradlew -Pq build
> Manual testing in vagrant
> 
> 
> Thanks,
> 
> Maxim Khutornenko
> 
>

Reply via email to