[ https://issues.apache.org/jira/browse/FLINK-8178?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16287910#comment-16287910 ]
ASF GitHub Bot commented on FLINK-8178: --------------------------------------- Github user NicoK commented on a diff in the pull request: https://github.com/apache/flink/pull/5105#discussion_r156413073 --- Diff: flink-runtime/src/main/java/org/apache/flink/runtime/io/network/api/serialization/SpanningRecordSerializer.java --- @@ -169,33 +151,29 @@ public Buffer getCurrentBuffer() { if (targetBuffer == null) { return null; } - - targetBuffer.setSize(position); - return targetBuffer; + Buffer result = targetBuffer.build(); + targetBuffer = null; + return result; } @Override public void clearCurrentBuffer() { targetBuffer = null; - position = 0; - limit = 0; } @Override public void clear() { targetBuffer = null; - position = 0; - limit = 0; - // ensure clear state with hasRemaining false (for correct setNextBuffer logic) + // ensure clear state with hasRemaining false (for correct setNextBufferBuilder logic) dataBuffer.position(dataBuffer.limit()); lengthBuffer.position(4); } @Override public boolean hasData() { // either data in current target buffer or intermediate buffers - return position > 0 || (lengthBuffer.hasRemaining() || dataBuffer.hasRemaining()); + return (targetBuffer != null && !targetBuffer.isEmpty()) || (lengthBuffer.hasRemaining() || dataBuffer.hasRemaining()); --- End diff -- it has been there before, but the second set of parentheses is actually not needed... `return (targetBuffer != null && !targetBuffer.isEmpty()) || lengthBuffer.hasRemaining() || dataBuffer.hasRemaining();` > Introduce not threadsafe write only BufferBuilder > ------------------------------------------------- > > Key: FLINK-8178 > URL: https://issues.apache.org/jira/browse/FLINK-8178 > Project: Flink > Issue Type: Improvement > Components: Network > Reporter: Piotr Nowojski > Assignee: Piotr Nowojski > Fix For: 1.5.0 > > > While Buffer class is used in multithreaded context it requires > synchronisation. Now it is miss-leading/unclear and suggesting that > RecordSerializer should take into account synchronisation of the Buffer > that's holding. With NotThreadSafe BufferBuilder there would be clear > separation between single-threaded writing/creating a BufferBuilder and > multithreaded Buffer handling/retaining/recycling. -- This message was sent by Atlassian JIRA (v6.4.14#64029)