Sorry, I missed Matthias' +1 binding. I'll move the KIP back to "Adopted" and add it to the AK 2.6.0.
Apologies for the noise. On Tue, May 26, 2020 at 12:14 PM Randall Hauch <rha...@gmail.com> wrote: > Just a quick note: I've changed > https://cwiki.apache.org/confluence/display/KAFKA/KIP-557%3A+Add+emit+on+change+support+for+Kafka+Streams > to > denote that this KIP is still in voting, as it has only received 2 binding > votes. I will also remove the KIP from the AK 2.6.0 release, since the KIP > freeze (May 20) has already passed, meaning even with an additional binding > vote this KIP still would not make the AK 2.6.0 deadline. > > Best regards, > > Randall > > On Sat, Mar 7, 2020 at 4:53 PM Richard Yu <yohan.richard...@gmail.com> > wrote: > >> Hi Matthias, >> >> Oh, I see. Next time, I will take that into account. >> It looked like at the time there wasn't much contention over the major >> points of the proposal, so I thought I could pass it. >> >> I will also make some last modifications to the KIP. >> >> Thanks for your vote! >> >> Best, >> Richard >> >> >> On Sat, Mar 7, 2020 at 1:00 PM Matthias J. Sax <mj...@apache.org> wrote: >> >> > -----BEGIN PGP SIGNED MESSAGE----- >> > Hash: SHA512 >> > >> > Richard, >> > >> > you cannot close a KIP as accepted with 2 binging votes. (cf >> > https://cwiki.apache.org/confluence/display/KAFKA/Bylaws) >> > >> > You could only discard the KIP as long as it's not accepted :D >> > >> > However, I am +1 (binding) and thus you can close the VOTE as accepted. >> > >> > >> > Just a three minor follow up comments: >> > >> > (1) In "Reporting Strategies" you mention in point (2) "Emit on update >> > / non-empty content" -- I am not sure what "empty content" would be. >> > This is a little bit confusing. Maybe just remove it? >> > >> > >> > (2) "Design Reasoning" >> > >> > > we have decided that we will forward aggregation results if and >> > > only if the timestamp and the value had not changed >> > >> > This sounds incorrect. If both value and timestamp have not changed, >> > we would skip the update from my understanding? >> > >> > Ie, to phrase is differently: for a table-operation we only consider >> > the value to make a comparison and if the value does not change, we >> > don't emit anything (even if the timestamp changed). >> > >> > For windowed aggregations however, even if the value does not change, >> > but the timestamp advances, we emit, ie, a changing timestamp is not >> > considered idempotent for this case. (Note, that the timestamp can >> > never go backward for this case, because it's computed as maximum over >> > all input record for the window). >> > >> > >> > (3) The discussion about stream time is very interesting. I agree that >> > it's an orthogonal concern to this KIP. >> > >> > >> > >> > - -Matthias >> > >> > >> > On 3/6/20 1:52 PM, Richard Yu wrote: >> > > Hi all, >> > > >> > > I have decided to pass this KIP with 2 binding votes and 3 >> > > non-binding votes (including mine). I will update KIP status >> > > shortly after this. >> > > >> > > Best, Richard >> > > >> > > On Thu, Mar 5, 2020 at 3:45 PM Richard Yu >> > > <yohan.richard...@gmail.com> wrote: >> > > >> > >> Hi all, >> > >> >> > >> Just polling for some last changes on the name. I think that >> > >> since there doesn't seem to be much objection to any major >> > >> changes in the KIP, I will pass it this Friday. >> > >> >> > >> If you feel that we still need some more discussion, please let >> > >> me know. :) >> > >> >> > >> Best, Richard >> > >> >> > >> P.S. Will start working on a PR for this one soon. >> > >> >> > >> On Wed, Mar 4, 2020 at 1:30 PM Guozhang Wang <wangg...@gmail.com> >> > >> wrote: >> > >> >> > >>> Regarding the metric name, I was actually trying to be >> > >>> consistent with the node-level `suppression-emit` as I feel >> > >>> this one's characteristics is closer to that. I other folks >> > >>> feels better to align with the task-level "dropped-records" I >> > >>> think I can be convinced too. >> > >>> >> > >>> >> > >>> Guozhang >> > >>> >> > >>> On Wed, Mar 4, 2020 at 12:09 AM Bruno Cadonna >> > >>> <br...@confluent.io> wrote: >> > >>> >> > >>>> Hi all, >> > >>>> >> > >>>> may I make a non-binding proposal for the metric name? I >> > >>>> would prefer "skipped-idempotent-updates" to be consistent >> > >>>> with the "dropped-records". >> > >>>> >> > >>>> Best, Bruno >> > >>>> >> > >>>> On Tue, Mar 3, 2020 at 11:57 PM Richard Yu >> > >>>> <yohan.richard...@gmail.com> wrote: >> > >>>>> >> > >>>>> Hi all, >> > >>>>> >> > >>>>> Thanks for the discussion! >> > >>>>> >> > >>>>> @Guozhang, I will make the corresponding changes to the KIP >> > >>>>> (i.e. >> > >>>> renaming >> > >>>>> the sensor and adding some notes). With the current state >> > >>>>> of things, we are very close. Just need that >> > >>> one >> > >>>>> last binding vote. >> > >>>>> >> > >>>>> @Matthias J. Sax <matth...@confluent.io> It would be ideal >> > >>>>> if we can >> > >>>> also >> > >>>>> get your last two cents on this as well. Other than that, >> > >>>>> we are good. >> > >>>>> >> > >>>>> Best, Richard >> > >>>>> >> > >>>>> >> > >>>>> On Tue, Mar 3, 2020 at 10:46 AM Guozhang Wang >> > >>>>> <wangg...@gmail.com> >> > >>>> wrote: >> > >>>>> >> > >>>>>> Hi Bruno, John: >> > >>>>>> >> > >>>>>> 1) That makes sense. If we consider them to be >> > >>>>>> node-specific metrics >> > >>>> that >> > >>>>>> only applies to a subset of built-in processor nodes that >> > >>>>>> are >> > >>>> irrelevant to >> > >>>>>> alert-relevant metrics (just like suppression-emit (rate >> > >>>>>> | total)), >> > >>>> they'd >> > >>>>>> better be per-node instead of per-task and we would not >> > >>>>>> associate >> > >>> such >> > >>>>>> events with warning. With that in mind, I'd suggest we >> > >>>>>> consider >> > >>>> renaming >> > >>>>>> the metric without the `dropped` keyword to distinguish >> > >>>>>> it with the per-task level sensor. How about >> > >>>>>> "idempotent-update-skip (rate | >> > >>>> total)"? >> > >>>>>> >> > >>>>>> Also a minor suggestion: we should clarify in the KIP / >> > >>>>>> javadocs >> > >>> which >> > >>>>>> built-in processor nodes would have this metric while >> > >>>>>> others don't. >> > >>>>>> >> > >>>>>> 2) About stream time tracking, there are multiple known >> > >>>>>> issues that >> > >>> we >> > >>>>>> should close to improve our consistency semantics: >> > >>>>>> >> > >>>>>> a. preserve stream time of active tasks across rebalances >> > >>>>>> where >> > >>> they >> > >>>> may >> > >>>>>> be migrated. This is what KAFKA-9368 >> > >>>>>> <https://issues.apache.org/jira/browse/KAFKA-9368> meant >> > >>>>>> for. b. preserve stream time of standby tasks to be >> > >>>>>> aligned with the >> > >>> active >> > >>>>>> tasks, via the changelog topics. >> > >>>>>> >> > >>>>>> And what I'm more concerning is b) here. For example: >> > >>>>>> let's say we >> > >>>> have a >> > >>>>>> topology of `source -> A -> repartition -> B` where both >> > >>>>>> A and B >> > >>> have >> > >>>>>> states along with changelogs, and both of them have >> > >>>>>> standbys. If a >> > >>>> record >> > >>>>>> is piped from the source and completed traversed through >> > >>>>>> the >> > >>> topology, >> > >>>> we >> > >>>>>> need to make sure that the stream time inferred across: >> > >>>>>> >> > >>>>>> * active task A (inferred from the source record), * >> > >>>>>> active task B (inferred from the derived record from >> > >>>>>> repartition >> > >>>> topic), >> > >>>>>> * standby task A (inferred from the changelog topic of >> > >>>>>> A's store), * standby task B (inferred from the changelog >> > >>>>>> topic of B's store) >> > >>>>>> >> > >>>>>> are consistent (note I'm not saying they should be >> > >>>>>> "exactly the >> > >>> same", >> > >>>> but >> > >>>>>> consistent, meaning that they may have different values >> > >>>>>> but as long >> > >>> as >> > >>>> that >> > >>>>>> does not impact the time-based queries, it is fine). The >> > >>>>>> main >> > >>>> motivation is >> > >>>>>> that on IQ, where both active and standby tasks could be >> > >>>>>> accessed, >> > >>> we >> > >>>> can >> > >>>>>> eventually improve our consistency guarantee to have 1) >> > >>>> read-your-write, 2) >> > >>>>>> consistency across stores, etc. >> > >>>>>> >> > >>>>>> I agree with John's assessment in the previous email, and >> > >>>>>> just to >> > >>>> clarify >> > >>>>>> more concretely what I'm thinking. >> > >>>>>> >> > >>>>>> >> > >>>>>> Guozhang >> > >>>>>> >> > >>>>>> >> > >>>>>> On Tue, Mar 3, 2020 at 9:03 AM John Roesler >> > >>>>>> <vvcep...@apache.org> >> > >>>> wrote: >> > >>>>>> >> > >>>>>>> Thanks, Guozhang and Bruno! >> > >>>>>>> >> > >>>>>>> 2) I had a similar though to both of you about the >> > >>>>>>> metrics, but I >> > >>>> ultimately >> > >>>>>>> came out with a conclusion like Bruno's. These aren't >> > >>>>>>> dropped >> > >>> invalid >> > >>>>>>> records, they're intentionally dropped, valid, but >> > >>>>>>> unnecessary, >> > >>>> updates. >> > >>>>>>> A "warning" for this case definitely seems wrong, and >> > >>>>>>> I'd also not recommend counting these events along with >> > >>>>>>> "dropped-records", because those >> > >>> are >> > >>>>>>> all dropped invalid records, e.g., late or null-keyed >> > >>>>>>> or couldn't >> > >>> be >> > >>>>>>> deserialized. >> > >>>>>>> >> > >>>>>>> Like Bruno pointed out, an operator should be concerned >> > >>>>>>> to see non-zero "dropped-records", and would then >> > >>>>>>> consult the logs for >> > >>>> warnings. >> > >>>>>>> But that same person should be happy to see >> > >>>> "dropped-idempotent-updates" >> > >>>>>>> increasing, since it means they're saving time and >> > >>>>>>> money. Maybe >> > >>> the >> > >>>> name >> > >>>>>>> of the metric could be different, but I couldn't think >> > >>>>>>> of a better >> > >>>> one. >> > >>>>>>> OTOH, maybe it just stands out to us because we >> > >>>>>>> recently discussed those >> > >>>> other >> > >>>>>>> metrics in KIP-444? >> > >>>>>>> >> > >>>>>>> 1) Maybe we should discuss this point more. It seems >> > >>>>>>> like we should >> > >>>> maintain >> > >>>>>>> an invariant that the following three objects always >> > >>>>>>> have exactly >> > >>> the >> > >>>>>> same >> > >>>>>>> state (modulo flush boundaries): 1. The internal state >> > >>>>>>> store 2. The changelog 3. The operation's result view >> > >>>>>>> >> > >>>>>>> That is, if I have a materialized Filter, then it seems >> > >>>>>>> like I >> > >>> _must_ >> > >>>>>> store >> > >>>>>>> exactly the same record in the store and the changelog, >> > >>>>>>> and also >> > >>>> forward >> > >>>>>>> the exact same record, including the timestamp, to the >> > >>>>>>> downstream operations. >> > >>>>>>> >> > >>>>>>> If we store something different in the internal state >> > >>>>>>> store than >> > >>> the >> > >>>>>>> changelog, we can get a situation where the state is >> > >>>>>>> actually >> > >>>> different >> > >>>>>>> after restoration than it is during processing, and >> > >>>>>>> queries against >> > >>>> standbys >> > >>>>>>> would return different results than queries against the >> > >>>>>>> active tasks. >> > >>>>>>> >> > >>>>>>> Regarding storing something different in the >> > >>>>>>> store+changelog than >> > >>> we >> > >>>>>>> forward downstream, consider the following topology: >> > >>>>>>> sourceTable .filter(someFilter, Materialized.as("f1")) >> > >>>>>>> .filter(_ -> true, Materialized.as("f2")) >> > >>>>>>> >> > >>>>>>> If we didn't forward exactly the same data we store, >> > >>>>>>> then >> > >>> querying f2 >> > >>>>>>> would return different results than querying f1, which >> > >>>>>>> is clearly >> > >>> not >> > >>>>>>> correct, given the topology. >> > >>>>>>> >> > >>>>>>> It seems like maybe what you have in mind is the >> > >>>>>>> preservation of >> > >>>> stream >> > >>>>>>> time across restart/rebalance? This bug is still open, >> > >>>>>>> actually: >> > >>>>>>> https://issues.apache.org/jira/browse/KAFKA-9368 It >> > >>>>>>> seems like solving that bug would be independent of >> > >>>>>>> KIP-557. >> > >>> I.e., >> > >>>>>>> KIP-557 neither makes that bug worse or better. >> > >>>>>>> >> > >>>>>>> One other thought I had is maybe you were thinking that >> > >>>>>>> operators would update their internally tracked stream >> > >>>>>>> time, but still >> > >>> discard >> > >>>>>>> records? I think that _would_ be a bug. That is, if a >> > >>>>>>> record gets >> > >>>>>> discarded >> > >>>>>>> as idempotent, it should have no effect at all on the >> > >>>>>>> state of the application. Reflecting on my prior >> > >>>>>>> analysis of stream time, most of the cases >> > >>>> where >> > >>>>>> we >> > >>>>>>> track stream time is in Stream aggregations, and in >> > >>>>>>> those cases, >> > >>> if >> > >>>> an >> > >>>>>>> incoming record's timestamp is higher than the previous >> > >>>>>>> stream >> > >>> time, >> > >>>> it >> > >>>>>>> would already not be considered idempotent. So we would >> > >>>>>>> store, >> > >>> log, >> > >>>> and >> > >>>>>>> forward the result with the new timestamp. The only >> > >>>>>>> other case is Suppress. With respect to idempotence, >> > >>>> Suppress is >> > >>>>>>> equivalent to a stateless no-op transformation. All it >> > >>>>>>> does is >> > >>>> collect >> > >>>>>> and >> > >>>>>>> delay updates. It has no memory of what it previously >> > >>>>>>> emitted, so it >> > >>>> wouldn't >> > >>>>>>> be possible for it to check for idempotence anyway. >> > >>>>>>> >> > >>>>>>> Was that what you were thinking? Thanks, -John >> > >>>>>>> >> > >>>>>>> >> > >>>>>>> On Tue, Mar 3, 2020, at 02:34, Bruno Cadonna wrote: >> > >>>>>>>> Hi Guozhang, >> > >>>>>>>> >> > >>>>>>>> I also had the same thought about using the existing >> > >>>> "dropped-records" >> > >>>>>>>> metrics. However, I think in this case it would be >> > >>>>>>>> better to >> > >>> use a >> > >>>> new >> > >>>>>>>> metric because dropped idempotent updates is an >> > >>>>>>>> optimization, >> > >>> they >> > >>>> do >> > >>>>>>>> not represent missed records. The dropped idempotent >> > >>>>>>>> updates in general do not change the result and so do >> > >>>>>>>> not need a warn log message. Whereas dropped records >> > >>>>>>>> due to expired windows, >> > >>>> serialization >> > >>>>>>>> errors, or lateness might be something concerning >> > >>>>>>>> that need a >> > >>> warn >> > >>>> log >> > >>>>>>>> message. >> > >>>>>>>> >> > >>>>>>>> Looking at the metrics, you would be happy to see >> > >>>>>>>> "dropped-idempotent-updates" increase, because that >> > >>>>>>>> means >> > >>> Streams >> > >>>> gets >> > >>>>>>>> rid of no-ops downstream, but you would be concerned >> > >>>>>>>> if "dropped-records" would increase, because that >> > >>>>>>>> means your >> > >>> records >> > >>>> or >> > >>>>>>>> the configuration of your app has issues. The >> > >>>>>>>> "dropped-idempotent-updates" metric could also be an >> > >>>>>>>> indication >> > >>>> that >> > >>>>>>>> you could further optimize your setup, by getting rid >> > >>>>>>>> of >> > >>> idempotent >> > >>>>>>>> updates further upstream. >> > >>>>>>>> >> > >>>>>>>> Best, Bruno >> > >>>>>>>> >> > >>>>>>>> On Tue, Mar 3, 2020 at 7:58 AM Guozhang Wang < >> > >>> wangg...@gmail.com> >> > >>>>>> wrote: >> > >>>>>>>>> >> > >>>>>>>>> Hello Richard, >> > >>>>>>>>> >> > >>>>>>>>> Thanks for the KIP. I once reviewed it and was >> > >>>>>>>>> concerned about >> > >>>> its >> > >>>>>>> effects >> > >>>>>>>>> on stream time advancing. After reading the updated >> > >>>>>>>>> KIP I >> > >>> think >> > >>>> it >> > >>>>>> has >> > >>>>>>>>> answered a lot of them already. >> > >>>>>>>>> >> > >>>>>>>>> I have a couple minor comments still, otherwise I'm >> > >>>>>>>>> +1: >> > >>>>>>>>> >> > >>>>>>>>> 1) I want to clarify that for operations resulted >> > >>>>>>>>> in KTables >> > >>> (not >> > >>>>>> only >> > >>>>>>>>> aggregations, but consider KTable#filter that may >> > >>>>>>>>> also result >> > >>> in >> > >>>> a >> > >>>>>> new >> > >>>>>>>>> KTable), even if we drop emissions to the >> > >>>>>>>>> downstream topics we >> > >>>> would >> > >>>>>>> still >> > >>>>>>>>> append to the corresponding changelog if timestamp >> > >>>>>>>>> has >> > >>> changed. >> > >>>> This >> > >>>>>> is >> > >>>>>>>>> because the timestamps on the changelog is read by >> > >>>>>>>>> the standby >> > >>>> tasks >> > >>>>>>> which >> > >>>>>>>>> relies on them to infer its own stream time >> > >>>>>>>>> advancing. >> > >>>>>>>>> >> > >>>>>>>>> 2) About the metrics, in KIP-444 we are >> > >>>>>>>>> consolidating all >> > >>> types >> > >>>> of >> > >>>>>>>>> scenarios that can cause dropped records to the >> > >>>>>>>>> same metrics: >> > >>>>>>>>> >> > >>>>>>> >> > >>>>>> >> > >>>> >> > >>> >> https://cwiki.apache.org/confluence/display/KAFKA/KIP-557%3A+Add+emi >> > t+on+change+support+for+Kafka+Streams >> > >>>>>>>>> >> > >>>>>>>>> >> > >>> >> > late-records-drop: INFO at processor node level, replaced by >> > >>> INFO >> > >>>>>>>>> task-level "dropped-records". >> > >>>>>>>>> >> > >>>>>>>>> skipped-records: INFO at thread and processor node >> > >>>>>>>>> level, >> > >>>> replaced by >> > >>>>>>> INFO >> > >>>>>>>>> task-level "dropped-records". >> > >>>>>>>>> >> > >>>>>>>>> expired-window-record-drop: DEBUG at state store >> > >>>>>>>>> level, >> > >>> replaced >> > >>>> by >> > >>>>>>> INFO >> > >>>>>>>>> task-level "dropped-records". >> > >>>>>>>>> >> > >>>>>>>>> The main idea is that instead of using different >> > >>>>>>>>> metrics to >> > >>>> indicate >> > >>>>>>>>> different types of scenarios, and users just alert >> > >>>>>>>>> on that >> > >>> single >> > >>>>>>> metrics. >> > >>>>>>>>> When alert triggers, they can look into the log4j >> > >>>>>>>>> for its >> > >>> causes >> > >>>> (we >> > >>>>>>> made >> > >>>>>>>>> sure that all sensor recordings of this metric >> > >>>>>>>>> would be >> > >>>> associated >> > >>>>>>> with a >> > >>>>>>>>> warning log4j). >> > >>>>>>>>> >> > >>>>>>>>> So I'd suggest that instead of introducing a new >> > >>>>>>>>> per-node "dropped-idempotent-updates", we just >> > >>>>>>>>> piggy-back on the >> > >>> existing >> > >>>>>>> task-level >> > >>>>>>>>> metric; unless we think that idempotent drops are >> > >>>>>>>>> more >> > >>> frequent >> > >>>> than >> > >>>>>>> others >> > >>>>>>>>> and also they do not worth a warning log, in that >> > >>>>>>>>> case we can >> > >>>>>> consider >> > >>>>>>>>> break this metric down with different tags for >> > >>>>>>>>> example. >> > >>>>>>>>> >> > >>>>>>>>> Guozhang >> > >>>>>>>>> >> > >>>>>>>>> On Mon, Mar 2, 2020 at 1:59 PM Richard Yu < >> > >>>>>> yohan.richard...@gmail.com> >> > >>>>>>>>> wrote: >> > >>>>>>>>> >> > >>>>>>>>>> Hi all, >> > >>>>>>>>>> >> > >>>>>>>>>> Thanks for the votes so far! @Matthias or >> > >>>>>>>>>> @Guozhang Wang <guozh...@confluent.io> it >> > >>> would >> > >>>> be >> > >>>>>>> great to >> > >>>>>>>>>> also get your input on this KIP. >> > >>>>>>>>>> >> > >>>>>>>>>> It looks to be pretty close to completion, so the >> > >>>>>>>>>> finishing >> > >>>> touches >> > >>>>>>> are all >> > >>>>>>>>>> we need. :) >> > >>>>>>>>>> >> > >>>>>>>>>> Best, Richard >> > >>>>>>>>>> >> > >>>>>>>>>> On Mon, Mar 2, 2020 at 11:45 AM Ghassan Yammine >> > >>>>>>>>>> < ghassan.yamm...@bazaarvoice.com> wrote: >> > >>>>>>>>>> >> > >>>>>>>>>>> Hello all, >> > >>>>>>>>>>> >> > >>>>>>>>>>> +1 (non-binding) >> > >>>>>>>>>>> >> > >>>>>>>>>>> Thanks, >> > >>>>>>>>>>> >> > >>>>>>>>>>> Ghassan >> > >>>>>>>>>>> >> > >>>>>>>>>>> On 3/2/20, 12:43 PM, "Bruno Cadonna" >> > >>>>>>>>>>> <br...@confluent.io >> > >>>> >> > >>>>>> wrote: >> > >>>>>>>>>>> >> > >>>>>>>>>>> EXTERNAL: This email originated from outside >> > >>>>>>>>>>> of >> > >>>> Bazaarvoice. >> > >>>>>>> Do not >> > >>>>>>>>>>> click any links or open any attachments unless >> > >>>>>>>>>>> you trust >> > >>> the >> > >>>>>>> sender and >> > >>>>>>>>>>> know the content is safe. >> > >>>>>>>>>>> >> > >>>>>>>>>>> >> > >>>>>>>>>>> Hi Richard, >> > >>>>>>>>>>> >> > >>>>>>>>>>> +1 (non-binding) >> > >>>>>>>>>>> >> > >>>>>>>>>>> Best, Bruno >> > >>>>>>>>>>> >> > >>>>>>>>>>> On Mon, Mar 2, 2020 at 4:33 PM John Roesler < >> > >>>>>>> vvcep...@apache.org> >> > >>>>>>>>>>> wrote: >> > >>>>>>>>>>>> >> > >>>>>>>>>>>> Hi Richard, >> > >>>>>>>>>>>> >> > >>>>>>>>>>>> Thanks for the KIP! >> > >>>>>>>>>>>> >> > >>>>>>>>>>>> I'm +1 (binding) >> > >>>>>>>>>>>> >> > >>>>>>>>>>>> -john >> > >>>>>>>>>>>> >> > >>>>>>>>>>>> On Thu, Feb 27, 2020, at 14:40, Richard Yu >> > >>>>>>>>>>>> wrote: >> > >>>>>>>>>>>>> Hi all, >> > >>>>>>>>>>>>> >> > >>>>>>>>>>>>> I am proposing a new optimization to Kafka >> > >>>>>>>>>>>>> Streams >> > >>>> which >> > >>>>>>> would >> > >>>>>>>>>>> greatly >> > >>>>>>>>>>>>> reduce the number of idempotent updates >> > >>>>>>>>>>>>> (or >> > >>> no-ops) >> > >>>> in >> > >>>>>> the >> > >>>>>>> Kafka >> > >>>>>>>>>>> Streams >> > >>>>>>>>>>>>> DAG. A number of users have been interested >> > >>>>>>>>>>>>> in this >> > >>>> feature, >> > >>>>>> so >> > >>>>>>> it >> > >>>>>>>>>>> would be nice >> > >>>>>>>>>>>>> to pass this one in. >> > >>>>>>>>>>>>> >> > >>>>>>>>>>>>> For information, the KIP is described >> > >>>>>>>>>>>>> below: >> > >>>>>>>>>>>>> >> > >>>>>>>>>>> >> > >>>>>>>>>> >> > >>>>>>> >> > >>>>>> >> > >>>> >> > >>> >> https://cwiki.apache.org/confluence/display/KAFKA/KIP-557%3A+Add+emi >> > t+on+change+support+for+Kafka+Streams >> > >>>>>>>>>>> >> > >>> >> > >> >> > >>>>>>>>>>>>> We aim to make Kafka Streams more efficient >> > >>>>>>>>>>>>> by >> > >>>> adopting >> > >>>>>>> the "emit >> > >>>>>>>>>>> on >> > >>>>>>>>>>>>> change" reporting strategy. >> > >>>>>>>>>>>>> >> > >>>>>>>>>>>>> Please cast your vote! >> > >>>>>>>>>>>>> >> > >>>>>>>>>>>>> Best, Richard >> > >>>>>>>>>>>>> >> > >>>>>>>>>>> >> > >>>>>>>>>>> >> > >>>>>>>>>>> >> > >>>>>>>>>> >> > >>>>>>>>> >> > >>>>>>>>> >> > >>>>>>>>> -- -- Guozhang >> > >>>>>>>> >> > >>>>>>> >> > >>>>>> >> > >>>>>> >> > >>>>>> -- -- Guozhang >> > >>>>>> >> > >>>> >> > >>> >> > >>> >> > >>> -- -- Guozhang >> > >>> >> > >> >> > > >> > -----BEGIN PGP SIGNATURE----- >> > >> > iQIzBAEBCgAdFiEEI8mthP+5zxXZZdDSO4miYXKq/OgFAl5kC1kACgkQO4miYXKq >> > /OhHKA/+OewqjX248vjk6GO6Ex/f2kOJuIIDGb4/c0NlTIS/Iyat1+S8N9P58KNP >> > pg133xwdWHagU7wajYMktoFiPamQ+Cv+PPhr7qz38JdfVAvzpNb8tcsI/wr5apOQ >> > XNlBsPhQBLtO/JQUve72OqY/TC9unbpBfhA4tvdA/qkLNvDaX542SrZdlwXuqTKH >> > EBpgEPBrwaqJ5S65KTMs6Fppc5c2V3dWOAC7Ssql30OneUd/RS88oQ07oNkwZwss >> > tADw+tzXtw8a0C0PGtMoXhLrs9wipEsuGOP8N6uvuQCM7YoIvTyeBf3Cu7jG8NFB >> > r2caoWY4TZkqCRsrKe37nNbR8KpjkNQBxCZ7nvIJ9B3KCdB0JOFQXwYj1+23z6aX >> > T1otQ+0ZIg5lzpIFiHCzwzO5mo2VUEYryRvanw/f2S/LaaBIcg83Dz5TJIv8dFcd >> > mU7Vu1KXtpWTgpg48JkWd9qSwPqBaR+nvbdP/DnStwf9/9n5SSGgcdS83jw/w6RV >> > N1bX6YlDCFYeIIT14lrsbWiHSZpiFARZ0fn+VBm8DAF0g+mWlX5Hg30yHKujDj+h >> > qMDZkI2K2eoYRJaUFcS3yvr2RqCtgXMCEr+jrAVGHDaq+Lt4mbEJRZdon3MiF0Ht >> > WmEiNaQa7Tu5h+8P5Rb05kPAB6ODa7/sC0BxC54uRXLdPnNxQCs= >> > =nuG1 >> > -----END PGP SIGNATURE----- >> > >> >