[
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)