Guozhang Wang created KAFKA-7326: ------------------------------------ Summary: Let KStream.print() to flush on each printed line Key: KAFKA-7326 URL: https://issues.apache.org/jira/browse/KAFKA-7326 Project: Kafka Issue Type: Improvement Components: streams Reporter: Guozhang Wang
Today, {{KStream.print()}} is implemented as a special "foreach" function as below: {code} @Override public void apply(final K key, final V value) { final String data = String.format("[%s]: %s", label, mapper.apply(key, value)); printWriter.println(data); } {code} Note that since {{this.printWriter = new PrintWriter(new OutputStreamWriter(outputStream, StandardCharsets.UTF_8));}}, without flushing the writer we do not guarantee that printed lines are written to the underlying `outputStream` in time. Since {{KStream.print()}} is mainly for debugging / testing / demoing purposes, not for performance, I think it is okay to enforce auto flushing. This would include: 1. set {{autoFlush}} in the constructor of printWriter. 2. document in java-docs of {{KStream.print}} that this is for debug / testing purposes only, and it will try to flush on each record print, and hence should not be used for production usage if performance requirement is key. -- This message was sent by Atlassian JIRA (v7.6.3#76005)