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();`


---

Reply via email to