-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/33049/
-----------------------------------------------------------
(Updated April 21, 2015, 7:33 p.m.)
Review request for kafka and Joel Koshy.
Bugs: KAFKA-2084
https://issues.apache.org/jira/browse/KAFKA-2084
Repository: kafka
Description (updated)
-------
WIP: First patch for quotas.
Changes are
1. Adding per-client throttle time and quota metrics in
ClientQuotaMetrics.scala
2. Making changes in QuotaViolationException and Sensor to return delay time
changes.
3. Added configuration needed so far for quotas in KafkaConfig.
4. Unit tests This is currently not being used anywhere in the code because I
haven't yet figured out how to enforce delays i.e. purgatory vs delay queue.
I'll have a better idea once I look at the new purgatory implementation.
This is currently not being used anywhere in the code because I haven't yet
figured out how to enforce delays i.e. purgatory vs delay queue. Hopefully,
this smaller patch is easier to review.
Please read: This patch has 2 approaches for managing quotas in
ClientQuotaMetrics and CLientQuotaMetrics2 along with some example usage in
ReplicaManager. This code will have to be cleaned up significantly in order to
commit but I'm looking for feedback on which approach to use.
Approach 1: ClientQuotaMetrics wraps everything into a single class. Adding new
metrics is much clumsier.
Approach 2: ClientQuotaMetrics2 only maintains per-client metrics for a single
entity (producer, consumer) etc.. This makes the code easier to use. For
throttling on a new dimention i.e. request per second, we only need to create
this object with a new quota and will just work.
Diffs
-----
clients/src/main/java/org/apache/kafka/common/metrics/MetricConfig.java
dfa1b0a11042ad9d127226f0e0cec8b1d42b8441
clients/src/main/java/org/apache/kafka/common/metrics/Metrics.java
b3d3d7c56acb445be16a3fbe00f05eaba659be46
clients/src/main/java/org/apache/kafka/common/metrics/Quota.java
d82bb0c055e631425bc1ebbc7d387baac76aeeaa
clients/src/main/java/org/apache/kafka/common/metrics/QuotaViolationException.java
a451e5385c9eca76b38b425e8ac856b2715fcffe
clients/src/main/java/org/apache/kafka/common/metrics/Sensor.java
ca823fd4639523018311b814fde69b6177e73b97
core/src/main/scala/kafka/server/ClientQuotaMetrics.scala PRE-CREATION
core/src/main/scala/kafka/server/ClientQuotaMetrics2.scala PRE-CREATION
core/src/main/scala/kafka/server/KafkaConfig.scala
69b772c1941865fbe15b34bb2784c511f8ce519a
core/src/main/scala/kafka/server/KafkaServer.scala
c63f4ba9d622817ea8636d4e6135fba917ce085a
core/src/main/scala/kafka/server/ReplicaManager.scala
8ddd325015de4245fd2cf500d8b0e8c1fd2bc7e8
core/src/test/scala/unit/kafka/server/ClientQuotaMetricsTest.scala
PRE-CREATION
core/src/test/scala/unit/kafka/server/ClientQuotaMetricsTest2.scala
PRE-CREATION
Diff: https://reviews.apache.org/r/33049/diff/
Testing
-------
Thanks,
Aditya Auradkar