This is an automated email from the ASF dual-hosted git repository.

pnowojski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/master by this push:
     new 91462206889 [FLINK-27522][network] Ignore max buffers per channel when 
allocate buffer
91462206889 is described below

commit 914622068892ee2c5bd60532f3cabec1f581262d
Author: fanrui <[email protected]>
AuthorDate: Sat May 28 15:40:07 2022 +0800

    [FLINK-27522][network] Ignore max buffers per channel when allocate buffer
---
 .../flink/runtime/io/network/buffer/LocalBufferPool.java       |  6 ------
 .../flink/runtime/io/network/buffer/LocalBufferPoolTest.java   | 10 ++++++++--
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git 
a/flink-runtime/src/main/java/org/apache/flink/runtime/io/network/buffer/LocalBufferPool.java
 
b/flink-runtime/src/main/java/org/apache/flink/runtime/io/network/buffer/LocalBufferPool.java
index 4936670e09a..0d5068c02f3 100644
--- 
a/flink-runtime/src/main/java/org/apache/flink/runtime/io/network/buffer/LocalBufferPool.java
+++ 
b/flink-runtime/src/main/java/org/apache/flink/runtime/io/network/buffer/LocalBufferPool.java
@@ -372,12 +372,6 @@ class LocalBufferPool implements BufferPool {
         synchronized (availableMemorySegments) {
             checkDestroyed();
 
-            // target channel over quota; do not return a segment
-            if (targetChannel != UNKNOWN_CHANNEL
-                    && subpartitionBuffersCount[targetChannel] >= 
maxBuffersPerChannel) {
-                return null;
-            }
-
             segment = availableMemorySegments.poll();
 
             if (segment == null) {
diff --git 
a/flink-runtime/src/test/java/org/apache/flink/runtime/io/network/buffer/LocalBufferPoolTest.java
 
b/flink-runtime/src/test/java/org/apache/flink/runtime/io/network/buffer/LocalBufferPoolTest.java
index 56e1befddda..7401b5c6e9e 100644
--- 
a/flink-runtime/src/test/java/org/apache/flink/runtime/io/network/buffer/LocalBufferPoolTest.java
+++ 
b/flink-runtime/src/test/java/org/apache/flink/runtime/io/network/buffer/LocalBufferPoolTest.java
@@ -453,7 +453,11 @@ public class LocalBufferPoolTest extends TestLogger {
         final BufferBuilder bufferBuilder02 = 
localBufferPool.requestBufferBuilderBlocking(0);
         assertFalse(localBufferPool.getAvailableFuture().isDone());
 
-        assertNull(localBufferPool.requestBufferBuilder(0));
+        // When this channel reaches maxBuffersPerChannel, LocalBufferPool 
will be unavailable. But
+        // when a memory segment is requested from LocalBufferPool and 
availableMemorySegments isn't
+        // empty, maxBuffersPerChannel will be ignored and buffers will 
continue to be allocated.
+        // Check FLINK-27522 for more information.
+        final BufferBuilder bufferBuilder03 = 
localBufferPool.requestBufferBuilderBlocking(0);
         final BufferBuilder bufferBuilder21 = 
localBufferPool.requestBufferBuilderBlocking(2);
         final BufferBuilder bufferBuilder22 = 
localBufferPool.requestBufferBuilderBlocking(2);
         assertFalse(localBufferPool.getAvailableFuture().isDone());
@@ -464,9 +468,11 @@ public class LocalBufferPoolTest extends TestLogger {
         bufferBuilder21.close();
         assertFalse(localBufferPool.getAvailableFuture().isDone());
         bufferBuilder02.close();
-        assertTrue(localBufferPool.getAvailableFuture().isDone());
+        assertFalse(localBufferPool.getAvailableFuture().isDone());
         bufferBuilder01.close();
         assertTrue(localBufferPool.getAvailableFuture().isDone());
+        bufferBuilder03.close();
+        assertTrue(localBufferPool.getAvailableFuture().isDone());
         bufferBuilder22.close();
         assertTrue(localBufferPool.getAvailableFuture().isDone());
     }

Reply via email to