-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/53027/
-----------------------------------------------------------
(Updated Oct. 19, 2016, 10:54 a.m.)
Review request for samza and Xinyu Liu.
Changes
-------
Updated description.
Bugs: SAMZA-1017
https://issues.apache.org/jira/browse/SAMZA-1017
Repository: samza
Description (updated)
-------
Added disk quota based throttling to AsyncRunLoop.
Overview:
Adds a Throttleable interface, implemented by RunLoop, AsyncRunLoop and
ThrottlingExecutor
When AsyncRunLoop is throttled, it delays the onComplete() callback from
processAsync() by a delay amount appropriate for the desired work factor.
This implementation has a couple of known issues:
1. Adding additional delay to process()/processAsync() callback will not
throttle the run loop as long as task processing rate > message throughput.
E.g., a low QPS stream with process() time < message inter-arrival time. If
desirable, this can be addressed by delaying based on the total run loop time
instead of just the process() time.
2. If throttled, users can increase their throughput back to original by
increasing task.max.concurrency and redeploying their jobs. I don't have a
simple solution for this, suggestions are welcome.
Diffs
-----
samza-core/src/main/java/org/apache/samza/container/RunLoopFactory.java
a789d04
samza-core/src/main/java/org/apache/samza/container/disk/WatermarkDiskQuotaPolicy.java
21fbca2
samza-core/src/main/java/org/apache/samza/task/AsyncRunLoop.java a510bb0
samza-core/src/main/java/org/apache/samza/util/Throttleable.java PRE-CREATION
samza-core/src/main/java/org/apache/samza/util/ThrottlingExecutor.java
afcc4c5
samza-core/src/main/java/org/apache/samza/util/ThrottlingScheduler.java
PRE-CREATION
samza-core/src/main/scala/org/apache/samza/container/RunLoop.scala 538ebb8
samza-core/src/main/scala/org/apache/samza/container/SamzaContainer.scala
05a996c
samza-core/src/test/java/org/apache/samza/task/TestAsyncRunLoop.java ca913de
samza-core/src/test/java/org/apache/samza/util/TestThrottlingScheduler.java
PRE-CREATION
samza-core/src/test/scala/org/apache/samza/container/TestRunLoop.scala
aa1a8d6
samza-core/src/test/scala/org/apache/samza/container/TestSamzaContainer.scala
cff6b96
Diff: https://reviews.apache.org/r/53027/diff/
Testing
-------
Tested locally with a hello world app.
Thanks,
Prateek Maheshwari