[ 
https://issues.apache.org/jira/browse/KAFKA-21204?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18122124#comment-18122124
 ] 

Jun Rao commented on KAFKA-21204:
---------------------------------

One way to fix this is to pass maxPosition for lastFetchableOffset into the 
search (as the fetch path already does for data reads) rather than relying on 
every caller to post-filter.

> ListOffset may return -1 when offset is available
> -------------------------------------------------
>
>                 Key: KAFKA-21204
>                 URL: https://issues.apache.org/jira/browse/KAFKA-21204
>             Project: Kafka
>          Issue Type: Bug
>            Reporter: Jun Rao
>            Priority: Major
>
> When serving a ListOffset request, the broker eventually calls FileRecords.
> searchForTimestamp(), which calls batchesFrom(). batchesFrom() bounds the 
> iteration by the end of the segment, which could include uncommitted data. In 
> ReplicaManger.
> fetchOffset(), we bound the returned offset by lastFetchableOffset. However, 
> this means that the returned offset is -1, instead of the actual offset. This 
> issue can be more likely surfaced when MAX_TIMESTAMP is used in ListOffset 
> and records are appended in increasing timestamp order.
>  
> {code:java}
>                 if (resultHolder.lastFetchableOffset.isPresent &&
>                   timestampAndOffsetOpt.offset >= 
> resultHolder.lastFetchableOffset.get) {
>                   resultHolder.maybeOffsetsError.map(e => throw e)
>                 } else {{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to