You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flink.apache.org by "Feifan Wang (Jira)" <ji...@apache.org> on 2022/03/22 08:09:00 UTC

[jira] [Created] (FLINK-26799) StateChangeFormat#read not seek to offset correctly

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)