kafka-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dong Lin (JIRA)" <j...@apache.org>
Subject [jira] [Created] (KAFKA-7297) Both read/write access to Log.segments should be protected by lock
Date Wed, 15 Aug 2018 23:08:00 GMT
Dong Lin created KAFKA-7297:
-------------------------------

             Summary: Both read/write access to Log.segments should be protected by lock
                 Key: KAFKA-7297
                 URL: https://issues.apache.org/jira/browse/KAFKA-7297
             Project: Kafka
          Issue Type: Improvement
            Reporter: Dong Lin
            Assignee: Dong Lin


Log.replaceSegments() updates segments in two steps. It first adds new segments and then remove
old segments. Though this operation is protected by a lock, other read access such as Log.logSegments
does not grab lock and thus these methods may return an inconsistent view of the segments.

As an example, say Log.replaceSegments() intends to replace segments [0, 100), [100, 200)
with a new segment [0, 200). In this case if Log.logSegments is called right after the new
segments are added, the method may return segments [0, 200), [100, 200) and messages in the
range [100, 200) may be duplicated if caller choose to enumerate all messages in all segments
returned by the method.

The solution is probably to protect read/write access to Log.segments with read/write lock.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message