[ 
https://issues.apache.org/jira/browse/KAFKA-10652?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17250049#comment-17250049
 ] 

Jason Gustafson commented on KAFKA-10652:
-----------------------------------------

[~sagarrao] Apologies for the delay. 

> 1) this method maybeAppendBatches returns a timeToFlush which is used by the 
> NetworkChannel to drain messages. If I were to add the size based flush here, 
> then what do we return as timeToFlush from here?

Hmm... I am not sure it needs to change. Perhaps a simple idea is to let 
`BatchAccumulator.timeUntilDrain` return 0 when there are any completed 
batches. This will cause `needsDrain` to return true, which will cause the IO 
thread to be woken up in `KafkaRaftClient.scheduleAppend`. Does that make sense?
 
> 2) There is a field called maxBatchSize which is configured in 
> BatchAccumulator which seems to me as the max batch size. Currently, it is 
> set to 2 ^ 20. We will need to add a cap on the min size shouldn't exceed 
> certain values (or atleast not the maxBatchSize)?

Yeah, in line with the suggestion above, I think we can trigger a flush as soon 
as we have any batches which are complete (which means they have reached 
`maxBatchSize`). I'm not sure I follow the question about the min size though. 
Can you clarify?

> Raft leader should flush accumulated writes after a min size is reached
> -----------------------------------------------------------------------
>
>                 Key: KAFKA-10652
>                 URL: https://issues.apache.org/jira/browse/KAFKA-10652
>             Project: Kafka
>          Issue Type: Sub-task
>            Reporter: Jason Gustafson
>            Assignee: Sagar Rao
>            Priority: Major
>
> In KAFKA-10601, we implemented linger semantics similar to the producer to 
> let the leader accumulate a batch of writes before fsyncing them to disk. 
> Currently the fsync is only based on the linger time, but it would be helpful 
> to make it size-based as well. In other words, if we accumulate a 
> configurable N bytes, then we should not wait for linger expiration and 
> should just fsync immediately.



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

Reply via email to