Works for me.

(Btw: I did not really vote, just stated my overall support :P )

On 9/5/19 2:50 PM, John Roesler wrote:
> Thanks, all.
> 
> FWIW, the most recent formulation from Guozhang + Bruno's addendum would
> have my support.
> 
> Thanks,
> -John
> 
> On Thu, Sep 5, 2019 at 4:05 PM Bruno Cadonna <br...@confluent.io> wrote:
> 
>> Hi Guozhang,
>>
>> Your summary corresponds to my proposal.
>>
>> A new value would only be added if in future we change the metrics in
>> a backward-incompatible way, i.e., 2.4-<the version before the new
>> breaking change>. "latest" will always stay the default.
>>
>> Best,
>> Bruno
>>
>> On Thu, Sep 5, 2019 at 10:57 PM Guozhang Wang <wangg...@gmail.com> wrote:
>>>
>>> Hello Bruno,
>>>
>>> I think your concern makes sense, let's adopt this suggestion in KIP-444
>>> instead. Just to clarify:
>>>
>>> 1. The default value would be "latest".
>>> 2. The only other valid value is "0.10.0-2.3".
>>>
>>> And moving forward this config may stay without any new values.
>>>
>>>
>>> Guozhang
>>>
>>>
>>> On Thu, Sep 5, 2019 at 12:16 PM Bruno Cadonna <br...@confluent.io>
>> wrote:
>>>
>>>> Hi Guozhang,
>>>>
>>>> I think user experience and code maintenance are tightly related. The
>>>> harder to maintain the code the worse the user experience will get.
>>>>
>>>> Making the config optional does not solve the issue. Wouldn't users be
>>>> puzzled when we release 2.5 and they cannot set
>>>> built.in.metrics.version to 2.4 to be sure to get the same metrics for
>>>> that version? It seems with that solution we would just move
>>>> maintenance to the next release.
>>>>
>>>> I cannot see how the values `latest` and `0.10.0-2.3` would lead to a
>>>> bad user experience.
>>>>
>>>> Regarding testing, at least on integration test level, we absolutely
>>>> need to test all versions. It is too easy to make a mistake with so
>>>> many versions. Remember that on integration test level we need to
>>>> start an embedded Kafka for each single test.
>>>>
>>>> Best,
>>>> Bruno
>>>>
>>>> On Thu, Sep 5, 2019 at 8:46 PM Guozhang Wang <wangg...@gmail.com>
>> wrote:
>>>>>
>>>>> Hi Bruno,
>>>>>
>>>>> Thanks for raising this point. I think the main motivation behind
>> this
>>>>> proposal is, like Matthias said, to ease the understanding burden
>> from
>>>>> users to our own shoulders. Testing wise, I think we do not
>> necessarily
>>>>> need to explode the testing matrix but just test the last version
>> before
>>>>> each metrics refactoring (again, hopefully it is the only time) and
>>>> hence I
>>>>> think it worth benefiting user's experience. WDYT?
>>>>>
>>>>> Hi Matthias,
>>>>>
>>>>> Thanks for your feedback, I will update the wiki page accordingly.
>>>>>
>>>>> Will also close the other voting thread with your vote.
>>>>>
>>>>> Guozhang
>>>>>
>>>>> On Thu, Sep 5, 2019 at 11:27 AM Matthias J. Sax <
>> matth...@confluent.io>
>>>>> wrote:
>>>>>
>>>>>> I share Bruno's concern about future releases, however, I would
>> make
>>>>>> slightly different proposal.
>>>>>>
>>>>>> Instead of using "latest" we can just make the config optional and
>> if
>>>>>> not set, we use the new metrics code? This way we don't need to
>> add a
>>>>>> new version number each time we do a new release (note, that it
>> would
>>>> be
>>>>>> weird to keep default value "2.4" in future releases).
>>>>>>
>>>>>> For enabling backward compatibility: I don't have a strong opinion
>> if
>>>> we
>>>>>> should have a single value "0.10.0-2.3" or list each version
>>>> individually.
>>>>>>
>>>>>> In KIP-268 (fixing metadata upgrade) we decided to list each
>> version
>>>>>> individually as it seems simpler for users. Also, we wanted to hide
>>>>>> which release uses which metadata version (v0 in 0.10.0, and v1 in
>>>>>> 0.10.1 to 1.1). We could have collapsed `0.10.1` to `1.1` into a
>> single
>>>>>> value though but it seemed not to give best user experience.
>>>>>>
>>>>>> I think this KIP is a little different though and both options
>> seems to
>>>>>> be valid. However, I would like to emphasize that we should
>> optimize
>>>> for
>>>>>> user experience (and not if it's harder/easier to test etc---in
>> doubt,
>>>>>> we should always take on the burden if is helps to lift the burden
>> from
>>>>>> users).
>>>>>>
>>>>>> Overall, I am +1
>>>>>>
>>>>>> Some nits:
>>>>>>
>>>>>> (1) I think the motivation section for updating `StreamsMetrics`
>>>>>> interface does not make it clear why we need the change. What is
>> the
>>>>>> issue with the current interface and how do the new method address
>> the
>>>>>> issue
>>>>>>
>>>>>> (2) The metric name `put | put-if-absent .. | get-latency (avg |
>> max)`
>>>>>> is hard to read because is indicate that there is a `get-latency`
>>>> method
>>>>>> call on stores -- can we update it to
>>>>>>
>>>>>> `(put | put-if-absent .. | get)-latency (avg | max)`
>>>>>>
>>>>>> (3) typo: `When users override it to "2.2" or below,` this should
>> be
>>>>>> "2.3" -- or maybe even different if Bruno's concern gets addressed.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> -Matthias
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On 9/4/19 12:26 PM, Bruno Cadonna wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> I am sorry to restart the discussion here, but I came across a
>> small
>>>>>>> issue in the KIP.
>>>>>>>
>>>>>>> I started to implement KIP-444 and I am bit concerned about the
>>>> values
>>>>>>> for the the config `built.in.metrics.version`. In the KIP the
>>>> possible
>>>>>>> values are specified as all Kafka Streams versions. I think that
>> this
>>>>>>> set of values is really hard to maintain in the code and it also
>>>> blows
>>>>>>> up the testing burden unnecessarily because all versions need to
>> be
>>>>>>> tested. My proposal (backed by John) is to use the following
>> values:
>>>>>>> - `latest` for the latest version of the metrics
>>>>>>> - `0.10.0-2.3` for the version before `latest`
>>>>>>> If in future, let's say in version 4.1, we need again to change
>> the
>>>>>>> metrics, we would add `2.4-4.0` to the values of the config. With
>>>>>>> major versions, we could also get rid of some values.
>>>>>>>
>>>>>>> WDYT?
>>>>>>>
>>>>>>> You can also have a look at the PR
>>>>>>> https://github.com/apache/kafka/pull/7279 to see this in code.
>>>>>>>
>>>>>>> Best,
>>>>>>> Bruno
>>>>>>>
>>>>>>> On Tue, Aug 20, 2019 at 8:29 PM Guozhang Wang <
>> wangg...@gmail.com>
>>>>>> wrote:
>>>>>>>>
>>>>>>>> Hello Bruno,
>>>>>>>>
>>>>>>>> I've updated the wiki page again per your comments, here's a
>> brief
>>>>>> summary:
>>>>>>>>
>>>>>>>> 1. added the list of removed metrics.
>>>>>>>> 2. added a task-level INFO metric "dropped-records" that covers
>> all
>>>>>>>> scenarios and merges in the existing "late-records-drop",
>>>>>>>> "skipped-records", and "expired-window-records-drop".
>>>>>>>> 3. renamed the util functions of StreamsMetrics as
>>>> `addLatencyRateTotal`
>>>>>>>> and `addRateTotal` sensors.
>>>>>>>>
>>>>>>>>
>>>>>>>> Since I feel it has incorporated all of your comments I'm going
>> to
>>>> start
>>>>>>>> the vote thread for this KIP now.
>>>>>>>>
>>>>>>>>
>>>>>>>> Guozhang
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Aug 20, 2019 at 9:59 AM Guozhang Wang <
>> wangg...@gmail.com>
>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Hi Bruno,
>>>>>>>>>
>>>>>>>>> No it was not intentional, and we can definitely add the total
>>>> amount
>>>>>>>>> sensor as well -- they are just util functions to save users
>> some
>>>>>> lines of
>>>>>>>>> code anyways, and should be straightforward.
>>>>>>>>>
>>>>>>>>> Guozhang
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, Aug 20, 2019 at 1:05 AM Bruno Cadonna <
>> br...@confluent.io>
>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Guozhang,
>>>>>>>>>>
>>>>>>>>>> I totally missed the total invocation count metric in the
>> javadoc.
>>>>>>>>>> Which brings me to a follow-up question. Should the names of
>> the
>>>>>>>>>> methods reflect the included total invocation count? We have
>> to
>>>> rename
>>>>>>>>>> them anyways. One option would be to simply add `Total` to the
>>>> method
>>>>>>>>>> names, i.e., `addLatencyAndRateAndTotalSensor` and
>>>>>>>>>> `addRateAndTotalSensor` (alternatively without the `And`s).
>> Since
>>>>>>>>>> those sensors record exclusively invocations, another option
>>>> would be
>>>>>>>>>> `addInvocationSensor` and `addInvocationSensorWithoutLatency`.
>>>>>>>>>>
>>>>>>>>>> As far as I can see, we have sensors to record invocations but
>>>> none to
>>>>>>>>>> record amounts. Is that intentional? No need to add it to this
>>>> KIP, I
>>>>>>>>>> am just curious.
>>>>>>>>>>
>>>>>>>>>> Best,
>>>>>>>>>> Bruno
>>>>>>>>>>
>>>>>>>>>> On Tue, Aug 20, 2019 at 1:13 AM Guozhang Wang <
>> wangg...@gmail.com
>>>>>
>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>> Hi Bruno,
>>>>>>>>>>>
>>>>>>>>>>> Just realized that for `addRateSensor` and
>>>> `addLatencyAndRateSensor`
>>>>>>>>>> we've
>>>>>>>>>>> actually added the total invocation metric already.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Guozhang
>>>>>>>>>>>
>>>>>>>>>>> On Mon, Aug 19, 2019 at 4:11 PM Guozhang Wang <
>>>> wangg...@gmail.com>
>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi Bruno,
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Tue, Aug 6, 2019 at 1:51 AM Bruno Cadonna <
>>>> br...@confluent.io>
>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi Guozhang,
>>>>>>>>>>>>>
>>>>>>>>>>>>> I left my comments inline.
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Thu, Jul 18, 2019 at 8:28 PM Guozhang Wang <
>>>> wangg...@gmail.com>
>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hello Bruno,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thanks for the feedbacks, replied inline.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Mon, Jul 1, 2019 at 7:08 AM Bruno Cadonna <
>>>> br...@confluent.io>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi Guozhang,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Thank you for the KIP.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 1) As far as I understand, the StreamsMetrics interface
>> is
>>>> there
>>>>>>>>>> for
>>>>>>>>>>>>>>> user-defined processors. Would it make sense to also add
>> a
>>>>>>>>>> method to
>>>>>>>>>>>>>>> the interface to specify a sensor that records skipped
>>>> records?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Not sure I follow.. if users want to add a specific
>> skipped
>>>>>>>>>> records
>>>>>>>>>>>>>> sensor, she can still do that as a "throughput" sensor
>> via "
>>>>>>>>>>>>>> addThroughputSensor" and then "record" right?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> As an after-thought, maybe it's better to rename
>> `throughput`
>>>> to
>>>>>>>>>> `rate`
>>>>>>>>>>>>> in
>>>>>>>>>>>>>> the public APIs since it is really meant for the latter
>>>> semantics.
>>>>>>>>>> I did
>>>>>>>>>>>>>> not change it just to make less API changes / deprecate
>> fewer
>>>>>>>>>> functions.
>>>>>>>>>>>>>> But if we feel it is important we can change it as well.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> I see now that a user can record the rate of skipped
>> records.
>>>>>>>>>> However,
>>>>>>>>>>>>> I was referring to the total number of skipped records.
>> Maybe
>>>> my
>>>>>>>>>>>>> question should be more general: should we allow the user
>> to
>>>> also
>>>>>>>>>>>>> specify sensors for totals or combinations of rate and
>> totals?
>>>>>>>>>>>>>
>>>>>>>>>>>>> Sounds good to me, I will add it to the wiki page as well
>> for
>>>>>>>>>>>> StreamsMetrics.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>> Regarding the naming, I like `rate` more than `throughput`,
>>>> but I
>>>>>>>>>>>>> would not fight for it.
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 2) What are the semantics of active-task-process and
>>>>>>>>>>>>> standby-task-process
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Ah good catch, I think I made it in the wrong column.
>> Just
>>>> some
>>>>>>>>>>>>>> explanations here: Within a thread's looped iterations, it
>>>> will
>>>>>>>>>> first
>>>>>>>>>>>>> try
>>>>>>>>>>>>>> to process some records from the active tasks, and then
>> see if
>>>>>>>>>> there are
>>>>>>>>>>>>>> any standby-tasks that can be processed as well (i.e. just
>>>> reading
>>>>>>>>>> from
>>>>>>>>>>>>> the
>>>>>>>>>>>>>> restore consumer and apply to the local stores). The ratio
>>>> metrics
>>>>>>>>>> are
>>>>>>>>>>>>> for
>>>>>>>>>>>>>> indicating 1) what tasks (active or standby) does this
>> thread
>>>> own
>>>>>>>>>> so
>>>>>>>>>>>>> far,
>>>>>>>>>>>>>> and 2) how much time in percentage does it spend on each
>> of
>>>> them.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> But this metric should really be a task-level one that
>>>> includes
>>>>>>>>>> both the
>>>>>>>>>>>>>> thread-id and task-id, and upon task migrations they will
>> be
>>>>>>>>>> dynamically
>>>>>>>>>>>>>> deleted / (re)-created. For each task-id it may be owned
>> by
>>>>>>>>>> multiple
>>>>>>>>>>>>>> threads as one active and others standby, and hence the
>>>> separation
>>>>>>>>>> of
>>>>>>>>>>>>>> active / standby seems still necessary.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Makes sense.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 3) How do dropped-late-records and
>> expired-window-record-drop
>>>>>>>>>> relate
>>>>>>>>>>>>>>> to each other? I guess the former is for records that
>> fall
>>>>>>>>>> outside the
>>>>>>>>>>>>>>> grace period and the latter is for records that are
>> processed
>>>>>>>>>> after
>>>>>>>>>>>>>>> the retention period of the window. Is this correct?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Yes, that's correct. The names are indeed a bit confusing
>>>> since
>>>>>>>>>> they
>>>>>>>>>>>>> are
>>>>>>>>>>>>>> added at different releases historically..
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> More precisely, the `grace period` is a notion of the
>> operator
>>>>>>>>>> (hence
>>>>>>>>>>>>> the
>>>>>>>>>>>>>> metric is node-level, though it would only be used for DSL
>>>>>>>>>> operators)
>>>>>>>>>>>>> while
>>>>>>>>>>>>>> the `retention` is a notion of the store (hence the
>> metric is
>>>>>>>>>>>>> store-level).
>>>>>>>>>>>>>> Usually grace period will be smaller than store retention
>>>> though.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Processor node is aware of `grace period` and when
>> received a
>>>>>>>>>> record
>>>>>>>>>>>>> that
>>>>>>>>>>>>>> is older than grace deadline, it will be dropped
>> immediately;
>>>>>>>>>> otherwise
>>>>>>>>>>>>> it
>>>>>>>>>>>>>> will still be processed a maybe a new update is "put"
>> into the
>>>>>>>>>> store.
>>>>>>>>>>>>> The
>>>>>>>>>>>>>> store is aware of its `retention period` and then upon a
>> "put"
>>>>>>>>>> call if
>>>>>>>>>>>>> it
>>>>>>>>>>>>>> realized it is older than the retention deadline, that put
>>>> call
>>>>>>>>>> would be
>>>>>>>>>>>>>> ignored and metric is recorded.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> We have to separate them here since the window store can
>> be
>>>> used
>>>>>>>>>> in both
>>>>>>>>>>>>>> DSL and PAPI, and for the former case it would likely to
>> be
>>>>>> already
>>>>>>>>>>>>> ignored
>>>>>>>>>>>>>> at the processor node level due to the grace period which
>> is
>>>>>>>>>> usually
>>>>>>>>>>>>>> smaller than retention; but for PAPI there's no grace
>> period
>>>> and
>>>>>>>>>> hence
>>>>>>>>>>>>> the
>>>>>>>>>>>>>> processor would likely still process and call "put" on the
>>>> store.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Alright! Got it!
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 4) Is there an actual difference between skipped and
>> dropped
>>>>>>>>>> records?
>>>>>>>>>>>>>>> If not, shall we unify the terminology?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>> There is. Dropped records are only due to lateness; where
>> as
>>>>>>>>>> skipped
>>>>>>>>>>>>>> records can be due to serde errors (and user's error
>> handling
>>>>>>>>>> indicate
>>>>>>>>>>>>>> "skip and continue"), timestamp errors, etc.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I've considered maybe a better (more extensible) way
>> would be
>>>>>>>>>> defining a
>>>>>>>>>>>>>> single metric name, say skipped-records, but use different
>>>> tags to
>>>>>>>>>>>>> indicate
>>>>>>>>>>>>>> if its skipping reason (errors, windowing semantics,
>> etc). But
>>>>>>>>>> there's
>>>>>>>>>>>>>> still a tricky difference: for serde caused skipping for
>>>> example,
>>>>>>>>>> they
>>>>>>>>>>>>> will
>>>>>>>>>>>>>> be skipped at the very beginning and there's no effects
>> taken
>>>> at
>>>>>>>>>> all.
>>>>>>>>>>>>> For
>>>>>>>>>>>>>> some others e.g. null-key / value at the reduce operator,
>> it
>>>> is
>>>>>>>>>> only
>>>>>>>>>>>>>> skipped at the middle of the processing, i.e. some
>> effects may
>>>>>> have
>>>>>>>>>>>>> already
>>>>>>>>>>>>>> been taken in up-stream sub-topologies. And that's why for
>>>>>>>>>>>>> skipped-records
>>>>>>>>>>>>>> I've defined it on both task-level and node-level and the
>>>>>>>>>> aggregate of
>>>>>>>>>>>>> the
>>>>>>>>>>>>>> latter may still be smaller than the former, whereas for
>>>>>>>>>>>>> dropped-records it
>>>>>>>>>>>>>> is only for node-level.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> So how about an even more significant change then: we
>> enlarge
>>>> the
>>>>>>>>>>>>>> `dropped-late-records` to `dropped-records` which is
>>>> node-level
>>>>>>>>>> only,
>>>>>>>>>>>>> but
>>>>>>>>>>>>>> includes reasons form lateness to semantics (like
>> null-key) as
>>>>>>>>>> well; and
>>>>>>>>>>>>>> then we have a task-level-only `skipped-records` which
>> only
>>>> record
>>>>>>>>>> those
>>>>>>>>>>>>>> dropped at the very beginning and did not make it at all
>> to
>>>> the
>>>>>>>>>>>>> processing
>>>>>>>>>>>>>> topology. I feel this is a clearer distinguishment but
>> also a
>>>>>>>>>> bigger
>>>>>>>>>>>>> change
>>>>>>>>>>>>>> to users.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> I like the way you dropped-records and skipped-records are
>> now
>>>>>>>>>>>>> defined. My follow-up question is whether we should give
>> names
>>>> to
>>>>>>>>>>>>> those metrics that better describe their semantics, like:
>>>>>>>>>>>>>
>>>>>>>>>>>>> dropped-records-at-source and dropped-records-at-processor
>>>>>>>>>>>>>
>>>>>>>>>>>>> or
>>>>>>>>>>>>>
>>>>>>>>>>>>> records-dropped-at-source and records-dropped-at-processor
>>>>>>>>>>>>>
>>>>>>>>>>>>> or
>>>>>>>>>>>>>
>>>>>>>>>>>>> source-dropped-records and processor-dropped-records
>>>>>>>>>>>>>
>>>>>>>>>>>>> or alternatively with skipped. However, I would use the
>> same
>>>> term
>>>>>> as
>>>>>>>>>>>>> in expired-window-record-drop
>>>>>>>>>>>>>
>>>>>>>>>>>>> Maybe, we should also consider to rename
>>>> expired-window-record-drop
>>>>>>>>>> to
>>>>>>>>>>>>> expired-window-record-dropped to be consistent.
>>>>>>>>>>>>>
>>>>>>>>>>>>> WDYT?
>>>>>>>>>>>>>
>>>>>>>>>>>>> I was not considering "expired-window-record-drop" before
>>>> since it
>>>>>>>>>> is a
>>>>>>>>>>>> store-level metric, and I was only considering task-level
>>>>>>>>>> (skipped-records)
>>>>>>>>>>>> and processor-node-level (dropped-records) metrics, and I'm
>>>> using
>>>>>>>>>> different
>>>>>>>>>>>> terms deliberately to hint users that they are different
>> leveled
>>>>>>>>>> metrics.
>>>>>>>>>>>>
>>>>>>>>>>>> I still feel that using `skip` for task-level metrics
>> indicating
>>>>>> that
>>>>>>>>>> this
>>>>>>>>>>>> record was not processed at all, and using `drop` for
>>>>>> processor-level
>>>>>>>>>>>> metrics that this record is only dropped at this stage of
>> the
>>>>>>>>>> topology is a
>>>>>>>>>>>> better one; but I'm also okay with some finer grained
>> metrics so
>>>>>> that
>>>>>>>>>> we
>>>>>>>>>>>> can align the processor-level with store-level (they are on
>> the
>>>> same
>>>>>>>>>>>> granularity any ways), like:
>>>>>>>>>>>>
>>>>>>>>>>>> `dropped-records-null-field`: at processor nodes
>>>>>>>>>>>>
>>>>>>>>>>>> `dropped-records-too-late`: at processor nodes
>>>>>>>>>>>>
>>>>>>>>>>>> `dropped-records-expired-window`: at window-stores
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 5) What happens with removed metrics when the user sets
>> the
>>>>>>>>>> version of
>>>>>>>>>>>>>>> "built.in.metrics.version" to 2.2-
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I think for those redundant ones like ""forward-rate" and
>>>>>>>>>>>>> "destroy-rate"
>>>>>>>>>>>>>> we can still remove them with 2.2- as well; for other ones
>>>> that
>>>>>> are
>>>>>>>>>>>>> removed
>>>>>>>>>>>>>> / replaced like thread-level skipped-records we should
>> still
>>>>>>>>>> maintain
>>>>>>>>>>>>> them.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Could you add this comment about removal of redundant
>> metrics
>>>> to
>>>>>> the
>>>>>>>>>>>>> KIP such that is documented somewhere?
>>>>>>>>>>>>>
>>>>>>>>>>>>> Yes, for sure.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Best,
>>>>>>>>>>>>> Bruno
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> I've also decided to remove the rebalance-related metrics
>> from
>>>> the
>>>>>>>>>>>> instance-level and move it to consumer itself as part of
>>>> KIP-429.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> -- Guozhang
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> -- Guozhang
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> -- Guozhang
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> -- Guozhang
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>> -- Guozhang
>>>>
>>>
>>>
>>> --
>>> -- Guozhang
>>
> 

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to