Swapnil Ghike created KAFKA-1093:
------------------------------------
Summary: Log.getOffsetsBefore(t, …) does not return the last
confirmed offset before t
Key: KAFKA-1093
URL: https://issues.apache.org/jira/browse/KAFKA-1093
Project: Kafka
Issue Type: Bug
Reporter: Swapnil Ghike
Assignee: Swapnil Ghike
Let's say there are three log segments s1, s2, s3.
In Log.getoffsetsBefore(t, …), the offsetTimeArray will look like - [(s1.start,
s1.lastModified), (s2.start, s2.lastModified), (s3.start, s3.lastModified),
(logEndOffset, currentTimeMs)].
Let's say s2.lastModified < t < s3.lastModified. getOffsetsBefore(t, 1) will
return Seq(s2.start).
However, we already know s3.firstAppendTime. So, if s3.firstAppendTime < t <
s3.lastModified, we should rather return s3.start.
This also resolves another bug wherein the log has only one segment and
getOffsetsBefore() returns an empty Seq if the timestamp provided is less than
the lastModified of the only segment. We should rather return the startOffset
of the segment if the timestamp is greater than the firstAppendTime of the
segment.
--
This message was sent by Atlassian JIRA
(v6.1#6144)