Feifan Wang created FLINK-26799:
-----------------------------------

             Summary: StateChangeFormat#read not seek to offset correctly
                 Key: FLINK-26799
                 URL: https://issues.apache.org/jira/browse/FLINK-26799
             Project: Flink
          Issue Type: Bug
          Components: Runtime / State Backends
            Reporter: Feifan Wang


StateChangeFormat#read must seek to offset before read, current implement as 
follows :

 
{code:java}
FSDataInputStream stream = handle.openInputStream();
DataInputViewStreamWrapper input = wrap(stream);
if (stream.getPos() != offset) {
    LOG.debug("seek from {} to {}", stream.getPos(), offset);
    input.skipBytesToRead((int) offset);
}{code}
But the if condition is incorrect, stream.getPos() return the position of 
underlying stream which is different from position of input.

By the way, because of wrapped by BufferedInputStream, position of underlying 
stream always at n*bufferSize or the end of file. 

Actually, input is aways at position 0 at beginning, so I think we can seek to 
the offset directly.

 



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to