Jun Rao created KAFKA-21204:
-------------------------------
Summary: 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
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)