Jason Gustafson created KAFKA-8400: -------------------------------------- Summary: Do not update follower replica state if the log read failed Key: KAFKA-8400 URL: https://issues.apache.org/jira/browse/KAFKA-8400 Project: Kafka Issue Type: Improvement Reporter: Jason Gustafson
In {{ReplicaManager.fetchMessages}}, we have the following logic to read from the log and update follower state: {code} val result = readFromLocalLog( replicaId = replicaId, fetchOnlyFromLeader = fetchOnlyFromLeader, fetchIsolation = fetchIsolation, fetchMaxBytes = fetchMaxBytes, hardMaxBytesLimit = hardMaxBytesLimit, readPartitionInfo = fetchInfos, quota = quota) if (isFromFollower) updateFollowerLogReadResults(replicaId, result) else result {code} The call to {{readFromLocalLog}} could fail for many reasons, in which case we return a LogReadResult with an error set and all fields set to -1. The problem is that we do not check for the error when updating the follower state. As far as I can tell, this does not cause any correctness issues, but we're just asking for trouble. It would be better to check the error before proceeding to `Partition.updateReplicaLogReadResult`. Perhaps even better would be to have {{readFromLocalLog}} return something like {{Either[LogReadResult, Errors]}} so that we are forced to handle the error. -- This message was sent by Atlassian JIRA (v7.6.3#76005)