> On Oct. 2, 2014, 2:54 a.m., Bill Farner wrote:
> > src/main/java/org/apache/aurora/scheduler/async/JobUpdateHistoryPruner.java,
> >  line 85
> > <https://reviews.apache.org/r/26232/diff/2/?file=710417#file710417line85>
> >
> >     I'm always nervous when important behavior is embedded in something 
> > seemingly-less-important like logging.  Can you extract a variable to 
> > separate the two?

Kind of redundant but sure, done.


> On Oct. 2, 2014, 2:54 a.m., Bill Farner wrote:
> > src/main/java/org/apache/aurora/scheduler/storage/JobUpdateStore.java, line 
> > 140
> > <https://reviews.apache.org/r/26232/diff/2/?file=710418#file710418line140>
> >
> >     "...last completed updates that completed less than {@code 
> > historyPruneThreshold} ago.."

Done.


> On Oct. 2, 2014, 2:54 a.m., Bill Farner wrote:
> > src/main/java/org/apache/aurora/scheduler/storage/JobUpdateStore.java, line 
> > 147
> > <https://reviews.apache.org/r/26232/diff/2/?file=710418#file710418line147>
> >
> >     Keep the value rich as far down as you can, to mitigate accidental 
> > misuse:
> >         Amount<Long, Time> historyPruneThreshold

Disagree. I don't really like Amount -> long ->Amount -> long dance that would 
require. The Amount is converted into long only once now, converted into an 
absolute timestamp and passed down to SQL to compare against.


> On Oct. 2, 2014, 2:54 a.m., Bill Farner wrote:
> > src/main/java/org/apache/aurora/scheduler/storage/db/DBJobUpdateStore.java, 
> > line 141
> > <https://reviews.apache.org/r/26232/diff/2/?file=710419#file710419line141>
> >
> >     s/result/pruned/

Sure.


> On Oct. 2, 2014, 2:54 a.m., Bill Farner wrote:
> > src/main/java/org/apache/aurora/scheduler/storage/db/DBJobUpdateStore.java, 
> > line 143
> > <https://reviews.apache.org/r/26232/diff/2/?file=710419#file710419line143>
> >
> >     How would you feel about making the two pruning goals distinct at the 
> > mapper level?  Does that simplfiy anything?
> >     
> >     - get UUIDs of all updates older than pruneThreshold
> >     - get UUIDs of the the last >retainCount updates for each job
> >     - delete above UUIDs.
> >     
> >     I think i would find that easier to follow, at least.

This approach would require an extra SQL call (step 1) and potentially a lot 
more SQL calls in step 2 as we would now deal with raw job keys not 
pre-filtered for processing. The current algorithm is optimized to be less 
SQL-chatty and short circuits if there are no job keys to process:
- get job keys that have updates to be deleted (older than pruneThreshold 
and/or count > retainCount)
- for every key above get update UUIDs and delete them.


> On Oct. 2, 2014, 2:54 a.m., Bill Farner wrote:
> > src/main/java/org/apache/aurora/scheduler/storage/db/JobUpdateDetailsMapper.java,
> >  line 109
> > <https://reviews.apache.org/r/26232/diff/2/?file=710420#file710420line109>
> >
> >     Avoid repeating the method signature in text:
> >     s/Set of u/U/

Done.


> On Oct. 2, 2014, 2:54 a.m., Bill Farner wrote:
> > src/main/java/org/apache/aurora/scheduler/storage/db/JobUpdateDetailsMapper.java,
> >  line 121
> > <https://reviews.apache.org/r/26232/diff/2/?file=710420#file710420line121>
> >
> >     How about `getPruneCandidates`?

I don't think it will be clear enough as we are selecting job keys rather then 
UUIDs here. How about selectJobKeysForPruning?


> On Oct. 2, 2014, 2:54 a.m., Bill Farner wrote:
> > src/main/java/org/apache/aurora/scheduler/storage/log/WriteAheadStorage.java,
> >  line 320
> > <https://reviews.apache.org/r/26232/diff/2/?file=710421#file710421line320>
> >
> >     Why this rather than an explicit delete record for the affected update 
> > UUIDs?

I thought about that but decided to stick with the current solution:
- less code to maintain: deleting a set of UUIDs would require a new 
JobUpdateStore API only used by the LogStorage
- less data to store: persisting a bunch of pruned UUIDs seems redundant where 
a a single prune call restores the consistency much more effectively.


> On Oct. 2, 2014, 2:54 a.m., Bill Farner wrote:
> > src/main/java/org/apache/aurora/scheduler/storage/log/WriteAheadStorage.java,
> >  line 318
> > <https://reviews.apache.org/r/26232/diff/2/?file=710421#file710421line318>
> >
> >     If this comment remains, please elaborate on why it is not strictly 
> > necessary. (i know, but a future developer might not.)

Done.


> On Oct. 2, 2014, 2:54 a.m., Bill Farner wrote:
> > src/test/java/org/apache/aurora/scheduler/async/JobUpdateHistoryPrunerTest.java,
> >  line 45
> > <https://reviews.apache.org/r/26232/diff/2/?file=710425#file710425line45>
> >
> >     Can you take a stab at using FakeScheduledExecutor instead of a real 
> > thread?  I don't insist on it, but i'd like to see if that pattern works 
> > out in other situations.
> >     
> >     You'll have to modify FakeScheduledExecutor a bit to add support for 
> > `scheduleAtFixedRate`, but at that point all you should have to do in the 
> > test after `replay()` is
> >     
> >         clock.advance(pruneInterval);

That's a fine suggestion. Moved and refactored FakeScheduledExcecutor to 
support fixed rate scheduling.


- Maxim


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


On Oct. 2, 2014, 1:23 a.m., Maxim Khutornenko wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/26232/
> -----------------------------------------------------------
> 
> (Updated Oct. 2, 2014, 1:23 a.m.)
> 
> 
> Review request for Aurora, David McLaughlin and Bill Farner.
> 
> 
> Bugs: AURORA-743
>     https://issues.apache.org/jira/browse/AURORA-743
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> The pruner runs on periodic basis and trims completed updates up to the 
> guranteed per job retention count.
> 
> 
> Diffs
> -----
> 
>   src/main/java/org/apache/aurora/scheduler/async/AsyncModule.java 
> aa45d27391b1786ca3d5e8c928045f1b6f3cf5ef 
>   src/main/java/org/apache/aurora/scheduler/async/HistoryPruner.java 
> ebae58a04e8857c5f26d4b57c27dfcda9e14c82c 
>   src/main/java/org/apache/aurora/scheduler/async/JobUpdateHistoryPruner.java 
> PRE-CREATION 
>   src/main/java/org/apache/aurora/scheduler/storage/JobUpdateStore.java 
> c3abffe575e801cebec3572cf4aceac83a238b55 
>   src/main/java/org/apache/aurora/scheduler/storage/db/DBJobUpdateStore.java 
> 3db0114c5432a5b7d0b01d97c75494be9e3e99a3 
>   
> src/main/java/org/apache/aurora/scheduler/storage/db/JobUpdateDetailsMapper.java
>  c583e085e0458835d51ebf740a3b5f01b428bb25 
>   
> src/main/java/org/apache/aurora/scheduler/storage/log/WriteAheadStorage.java 
> 66c91644677e7176ccf53dcfcf29a6792ec398bc 
>   
> src/main/resources/org/apache/aurora/scheduler/storage/db/JobUpdateDetailsMapper.xml
>  631ab2543dadb77b7fd1cae96adc9c0bd2f94b39 
>   src/main/thrift/org/apache/aurora/gen/storage.thrift 
> 7e502450f06abb449d06af09cc59185c6a9a2963 
>   src/test/java/org/apache/aurora/scheduler/async/HistoryPrunerTest.java 
> 011d9ec5d84c658c2b2e39bb0b3f9d20b5440cee 
>   
> src/test/java/org/apache/aurora/scheduler/async/JobUpdateHistoryPrunerTest.java
>  PRE-CREATION 
>   
> src/test/java/org/apache/aurora/scheduler/storage/db/DBJobUpdateStoreTest.java
>  1b1160f349d64bbcd4d20103a82f3b8eb1ca75d9 
>   src/test/java/org/apache/aurora/scheduler/storage/log/LogStorageTest.java 
> 68df0d542e41438c0844f76fc5b9ec6996a00e8d 
> 
> Diff: https://reviews.apache.org/r/26232/diff/
> 
> 
> Testing
> -------
> 
> ./gradlew -Pq build
> 
> 
> Thanks,
> 
> Maxim Khutornenko
> 
>

Reply via email to