Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

For (A) it makes sense to have a dedicated timeout for send() method to provide blocking bound. So it gives another configuration.

      5. (A) maxbuffer.sendfull.block.ms - This timeout defines how long the producer.send() method can block (we will enforce this for both metadata and blocking on buffer full in a separate ticket).

With above, we have the following proposals and want to see which one makes more sense:

Proposal 1:

  • (A) max.buffer.full.block.ms - To replace block.on.buffer.full. The max time to block when buffer is full.
  • (A/B) metadata.fetch.timeout.ms - reuse metadata timeout as batch.timeout.ms because it is essentially metadata not available

...

Proposal 2:

...

  • .

...


  • (C) replication.timeout.ms
  • (C) network.request.timeout.ms

...

Proposal 1 has four configurations but does got guarantee of blocking time for send() when blocking on buffer full is turned on. So user needs to catch the exception in outside send and retry if buffer is full.

...

Proposed Changes

Because the NetworkClient works in an async way. We need to keep track of the send time for each request. So the implementation will the following:

...