lianetm commented on code in PR #23483:
URL: https://github.com/apache/kafka/pull/23483#discussion_r4187892337


##########
clients/src/main/java/org/apache/kafka/clients/producer/internals/BufferPool.java:
##########
@@ -370,8 +353,92 @@ public List<ByteBuffer> allocateChunks(int totalSize, long 
maxTimeToBlockMs) thr
             }
         }
 
-        // Allocate raw chunks for the reserved non-pooled portion outside the 
lock. On error,
-        // refund all reserved bytes (memoryRequired) and let the next waiter 
try.
+        return materializeChunks(pooled, numChunks, chunkSize, memoryRequired);
+    }
+
+    /**
+     * Non-blocking variant of {@link #allocateChunks} for callers that can 
neither wait nor fail, such as a
+     * chunked stream growing in the middle of a record. Returns the chunks if 
the memory is available right
+     * away, and {@code null} otherwise, without reserving anything, joining 
{@link #waiters} or recording a

Review Comment:
   > without reserving anything
   
   this related to the above comment, when the extra chunks are needing when 
writing, what about trying to allocate as much as we can from the pool? If we 
do all-or-nothing we could end up falling back to heap allocation from more 
than what's really needed.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to