appchemist commented on code in PR #18800:
URL: https://github.com/apache/kafka/pull/18800#discussion_r2173641799


##########
streams/src/main/java/org/apache/kafka/streams/kstream/internals/KStreamImpl.java:
##########
@@ -1307,6 +1295,7 @@ public <KOut, VOut> KStream<KOut, VOut> process(
             name,
             new ProcessorParameters<>(processorSupplier, name),
             stateStoreNames);
+        processNode.requireRepartitionAlways();

Review Comment:
   I initially thought of using `processNode.setKeyChangingOperation(true)` as 
well.
   
   However, I realized that using `processNode.setKeyChangingOperation(true)` 
can lead to changes in the topology compared to the original behavior.
   In fact, if we use `processNode.setKeyChangingOperation(true)`, the test 
`StreamsGraphTest.shouldNotThrowNPEWithMergeNodes()` fails, and the resulting 
topology differs as well.
   
   For now, I decided to preserve the existing behavior from a refactoring 
standpoint.
   That’s the reasoning behind introducing the Repartition enum in GraphNode.
   
   If changing the topology is not a concern, or if using 
`processNode.setKeyChangingOperation(true)` is considered the correct approach, 
then `Partition.REQUIRED` in `GraphNode` wouldn’t be necessary — we could just 
use `processNode.setKeyChangingOperation(true)` instead.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to