hzh0425 created KAFKA-16073:
-------------------------------

             Summary: Tiered Storage Bug: Incorrect Handling of Offset Ranges 
During Segment Deletion
                 Key: KAFKA-16073
                 URL: https://issues.apache.org/jira/browse/KAFKA-16073
             Project: Kafka
          Issue Type: Bug
          Components: core, Tiered-Storage
    Affects Versions: 3.6.1
            Reporter: hzh0425
            Assignee: hzh0425
             Fix For: 3.6.1


This bug pertains to Apache Kafka's tiered storage functionality. Specifically, 
it involves a timing issue in the {{UnifiedLog.deleteSegments}} method. The 
method first deletes segments from memory but delays updating the 
{{{}localLogStartOffset{}}}. Meanwhile, in 
{{{}ReplicaManager.handleOffsetOutOfRangeError{}}}, if the fetch offset is less 
than {{{}localLogStartOffset{}}}, it triggers the read remote process. However, 
if it's greater, an {{OffsetOutOfRangeException}} is sent to the client.

Consider a scenario with concurrent operations, where {{{}offset1 < offset2 < 
offset3{}}}. A client requests {{offset2}} while a background thread is 
deleting segments. The segments are deleted in memory, but 
{{LocalLogStartOffset}} is still at {{offset1}} and not yet updated to 
{{{}offset3{}}}. In this state, since {{offset2}} is greater than 
{{{}offset1{}}}, {{ReplicaManager.handleOffsetOutOfRangeError}} erroneously 
returns an {{OffsetOutOfRangeException}} to the client. This happens because 
the system has not yet recognized the new starting offset ({{{}offset3{}}}), 
leading to incorrect handling of fetch requests.
 
 
 
 



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

Reply via email to