[
https://issues.apache.org/jira/browse/FLINK-26799?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17511558#comment-17511558
]
Feifan Wang edited comment on FLINK-26799 at 3/24/22, 2:32 AM:
---------------------------------------------------------------
[~roman] , here the problem is *`underlyingStream.getPos() == offset` not mean
the wrapper stream is on correct position.*
was (Author: feifan wang):
[~roman] , here the problem is *`underlyingStream.getPos() == offset` not mean
the wrapper stream is on correct position.* **
> 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
> Priority: Major
>
> 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)