[
https://issues.apache.org/jira/browse/KAFKA-9611?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17046064#comment-17046064
]
Matthias J. Sax commented on KAFKA-9611:
----------------------------------------
IMHO, it's valid concern. If the update in the base table is for the same
derived key (ie, old and new value record in the base table, both map to the
same key in the derived table), there should only be one update instead of
doing subtraction and addition as two individual updates.
Atm, we just always assume that an update in the base table updated two
different rows in the derived table (and those rows might be on different
instances) and thus we do it in two steps. Cf:
[https://stackoverflow.com/questions/54372134/topologytestdriver-sending-incorrect-message-on-ktable-aggregations/54376633#54376633]
> KGroupedTable.aggregate(...) emits incorrect values
> ---------------------------------------------------
>
> Key: KAFKA-9611
> URL: https://issues.apache.org/jira/browse/KAFKA-9611
> Project: Kafka
> Issue Type: Bug
> Components: streams
> Affects Versions: 2.4.0
> Reporter: Neil Green
> Priority: Major
>
> I've run into what appears to be undesirable behaviour in a streams app.
> I have a KTable produced from a topic. The table contains entries like
> "abc1234/signal1" : 1, "abc1234/signal2" : 3
> The key is "id/signal name" and the value is an int. I want to produce a
> aggregate ktable containing the sum all of the
> signals for a given id.
> {{So if source ktable contains:}}
> {{+------------------+--+}}
> {{| abc1234/signal1 | 2 |}}
> {{| abc1234/signal2 | 4 |}}
> {{| abc4566/signal1 | 3 |}}
> {{+------------------+--+}}
> {{Then the output should contain}}
> {{+----------+--+}}
> {{| abc1234 | 6 |}}
> {{| abc4566 | 3 |}}
> {{+----------+--+}}
> {{On a change}}
> {{+------------------+--+}}
> {{| abc1234/signal1 | 3 |}}
> {{+------------------+--+}}
> {{```}}
> {{I would expect the change}}
> {{```}}
> {{+----------+--+}}
> {{| abc1234 | 7 |}}
> {{+----------+--+}}
> {{to be published.}}
> In fact there are two changelog entries published
> {{+----------+--+}}
> {{| abc1234 | 4 | // This is incorrect. The sum of the signals is never 4.}}
> {{+----------+--+}}
> Then
> {{+----------+--+}}
> {{| abc1234 | 7 |}}
> {{+----------+--+}}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)