Jason Gustafson created KAFKA-9886:
--------------------------------------

             Summary: Validate segment range before reading in `Log.read`
                 Key: KAFKA-9886
                 URL: https://issues.apache.org/jira/browse/KAFKA-9886
             Project: Kafka
          Issue Type: Improvement
            Reporter: Jason Gustafson
            Assignee: Jason Gustafson


Log.read uses the following logic to set the upper limit on a segment read.

{code}
val maxPosition = {
   // Use the max offset position if it is on this segment; otherwise, the 
segment size is the limit.
  if (maxOffsetMetadata.segmentBaseOffset == segment.baseOffset) {
     maxOffsetMetadata.relativePositionInSegment
  } else {
    segment.size
  }
}
{code}

In the else branch, the expectation is that 
`maxOffsetMetadata.segmentBaseOffset > segment.baseOffset`. In KAFKA-9838, we 
found a bug where this assumption failed  which led to reads above the high 
watermark. We should validate the expectation explicitly so that we don't leave 
the door open for similar bugs in the future.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to