[ https://issues.apache.org/jira/browse/KAFKA-4153?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15485561#comment-15485561 ]
Elias Levy commented on KAFKA-4153: ----------------------------------- As a side note, the API for {{JoinWindows}} has become mangled since 0.10.0.1. Now if you want to instantiate an asymetric {{JoinWindows}} you must first call {{JoinWindows.of(0)}} before you can call {{before}} or {{after}} to set to actual window boundaries. The class should provide alternative static method for both {{before}} and {{after}} to instantiate the class without having to first call {{of}}. > Incorrect KStream-KStream join behavior with asymmetric time window > ------------------------------------------------------------------- > > Key: KAFKA-4153 > URL: https://issues.apache.org/jira/browse/KAFKA-4153 > Project: Kafka > Issue Type: Bug > Components: streams > Affects Versions: 0.10.0.1 > Reporter: Elias Levy > Assignee: Guozhang Wang > > Using Kafka 0.10.0.1, if joining records in two streams separated by some > time, but only when records from one stream are newer than records from the > other, i.e. doing: > {{stream1.join(stream2, valueJoiner, JoinWindows.of("X").after(10000))}} > One would expect that the following would be equivalent: > {{stream2.join(stream1, valueJoiner, JoinWindows.of("X").before(10000))}} > Alas, that this is not the case. Instead, this generates the same output as > the first example: > {{stream2.join(stream1, valueJoiner, JoinWindows.of("X").after(10000))}} > The problem is that the > [{{DefaultJoin}}|https://github.com/apache/kafka/blob/caa9bd0fcd2fab4758791408e2b145532153910e/streams/src/main/java/org/apache/kafka/streams/kstream/internals/KStreamImpl.java#L692-L697] > implementation in {{KStreamImpl}} fails to reverse the {{before}} and > {{after}} values when creates the {{KStreamKStreamJoin}} for the other > stream, even though is calls {{reverseJoiner}} to reverse the joiner. -- This message was sent by Atlassian JIRA (v6.3.4#6332)