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)

Reply via email to