[
https://issues.apache.org/jira/browse/KAFKA-376?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Prashanth Menon updated KAFKA-376:
----------------------------------
Attachment: KAFKA-376-DRAFT.patch
Hi all, I feel like I should add a draft patch because the code has grown much
more complex since the last time I touched it. The patch itself is minimal but
a little nasty, so I'd like to clean it up a little but I figured I'd submit a
draft so more eyes can get on it. Here goes ... an outline:
1. Modified KafkaApis.availableFetchBytes to check the leader replicas
highwaterMark if the request is coming from a follower, otherwise use the
logEndOffset.
2. Modified readMessageSet to not read beyond the highwaterMark of the
replica's log (which is local because it's the leader) if the request is coming
from a regular, non-follower, consumer.
One thing I'm considering doing is putting the log read logic in the replica
itself since it is aware of hw and leo. There's also a
ReplicaManager.getLeaderReplica that throws an exception if the leader replica
doesn't exist but returns an Option[Replica] - can this just return a Replica?
As for the test, I couldn't find a decent place to put it because it includes
both replication and simple consumer tests. Rather than split the tests into
two separate classes, I thought it'd be better to group them together.
Looking forward to the suggestions.
> expose different data to fetch requests from the follower replicas and
> consumer clients
> ---------------------------------------------------------------------------------------
>
> Key: KAFKA-376
> URL: https://issues.apache.org/jira/browse/KAFKA-376
> Project: Kafka
> Issue Type: Bug
> Components: core
> Affects Versions: 0.8
> Reporter: Jun Rao
> Attachments: KAFKA-376-DRAFT.patch
>
> Original Estimate: 168h
> Remaining Estimate: 168h
>
> Currently, the broker always uses highwatermark to calculate the available
> bytes to a fetch request, no matter where the request is from. Instead, we
> should use highwatermark for requests coming from real consumer clients and
> use logendoffset for requests coming from follower replicas.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira