You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by ga...@apache.org on 2022/07/05 07:09:11 UTC

[flink] branch release-1.15 updated: [FLINK-28240][network] Fix the bug that NetworkBufferPool#getRequestedSegmentsUsage may throw ArithmeticException.

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

gaoyunhaii pushed a commit to branch release-1.15
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/release-1.15 by this push:
     new 95f4b6fc7fd [FLINK-28240][network] Fix the bug that NetworkBufferPool#getRequestedSegmentsUsage may throw ArithmeticException.
95f4b6fc7fd is described below

commit 95f4b6fc7fd4a713d8d6348d32a121498ffce1e2
Author: Gen Luo <lu...@gmail.com>
AuthorDate: Thu Jun 30 10:42:44 2022 +0800

    [FLINK-28240][network] Fix the bug that NetworkBufferPool#getRequestedSegmentsUsage may throw ArithmeticException.
---
 .../flink/runtime/io/network/buffer/NetworkBufferPool.java       | 7 +++++--
 .../flink/runtime/io/network/buffer/NetworkBufferPoolTest.java   | 9 +++++++++
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/flink-runtime/src/main/java/org/apache/flink/runtime/io/network/buffer/NetworkBufferPool.java b/flink-runtime/src/main/java/org/apache/flink/runtime/io/network/buffer/NetworkBufferPool.java
index ffdb9c727a0..1d83796e49f 100755
--- a/flink-runtime/src/main/java/org/apache/flink/runtime/io/network/buffer/NetworkBufferPool.java
+++ b/flink-runtime/src/main/java/org/apache/flink/runtime/io/network/buffer/NetworkBufferPool.java
@@ -381,8 +381,11 @@ public class NetworkBufferPool
     }
 
     public int getRequestedSegmentsUsage() {
-        return Math.toIntExact(
-                100L * getNumberOfRequestedMemorySegments() / getTotalNumberOfMemorySegments());
+        int totalNumberOfMemorySegments = getTotalNumberOfMemorySegments();
+        return totalNumberOfMemorySegments == 0
+                ? 0
+                : Math.toIntExact(
+                        100L * getNumberOfRequestedMemorySegments() / totalNumberOfMemorySegments);
     }
 
     @VisibleForTesting
diff --git a/flink-runtime/src/test/java/org/apache/flink/runtime/io/network/buffer/NetworkBufferPoolTest.java b/flink-runtime/src/test/java/org/apache/flink/runtime/io/network/buffer/NetworkBufferPoolTest.java
index 25a5d26c580..5a5bd186b3f 100644
--- a/flink-runtime/src/test/java/org/apache/flink/runtime/io/network/buffer/NetworkBufferPoolTest.java
+++ b/flink-runtime/src/test/java/org/apache/flink/runtime/io/network/buffer/NetworkBufferPoolTest.java
@@ -325,6 +325,15 @@ public class NetworkBufferPoolTest extends TestLogger {
         }
     }
 
+    @Test
+    public void testEmptyPoolSegmentsUsage() throws IOException {
+        try (CloseableRegistry closeableRegistry = new CloseableRegistry()) {
+            NetworkBufferPool globalPool = new NetworkBufferPool(0, 128);
+            closeableRegistry.registerCloseable(globalPool::destroy);
+            assertEquals(0, globalPool.getRequestedSegmentsUsage());
+        }
+    }
+
     @Test
     public void testSegmentsUsage() throws IOException {
         try (CloseableRegistry closeableRegistry = new CloseableRegistry()) {