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

snuyanzin 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 63b7674dcca [hotfix][table] Do not pollute code splitter cache with 
short code
63b7674dcca is described below

commit 63b7674dcca8eaccef31d45191efeb9d52e7b7d0
Author: Sergey Nuyanzin <[email protected]>
AuthorDate: Mon Oct 5 13:21:09 2026 +0200

    [hotfix][table] Do not pollute code splitter cache with short code
---
 .../apache/flink/table/codesplit/JavaCodeSplitter.java | 18 ++++++++++--------
 .../flink/table/codesplit/JavaCodeSplitterTest.java    |  4 ----
 2 files changed, 10 insertions(+), 12 deletions(-)

diff --git 
a/flink-table/flink-table-code-splitter/src/main/java/org/apache/flink/table/codesplit/JavaCodeSplitter.java
 
b/flink-table/flink-table-code-splitter/src/main/java/org/apache/flink/table/codesplit/JavaCodeSplitter.java
index c8e2bf69359..018afe9a97c 100644
--- 
a/flink-table/flink-table-code-splitter/src/main/java/org/apache/flink/table/codesplit/JavaCodeSplitter.java
+++ 
b/flink-table/flink-table-code-splitter/src/main/java/org/apache/flink/table/codesplit/JavaCodeSplitter.java
@@ -22,6 +22,7 @@ import org.apache.flink.annotation.VisibleForTesting;
 
 import org.apache.flink.shaded.guava33.com.google.common.cache.Cache;
 import org.apache.flink.shaded.guava33.com.google.common.cache.CacheBuilder;
+import 
org.apache.flink.shaded.guava33.com.google.common.util.concurrent.ExecutionError;
 import 
org.apache.flink.shaded.guava33.com.google.common.util.concurrent.UncheckedExecutionException;
 
 import java.time.Duration;
@@ -47,11 +48,19 @@ public class JavaCodeSplitter {
                     .build();
 
     public static String split(String code, int maxMethodLength, int 
maxClassMemberCount) {
+        checkArgument(code != null && !code.isEmpty(), "code cannot be empty");
+        checkArgument(maxMethodLength > 0, "maxMethodLength must be greater 
than 0");
+        checkArgument(maxClassMemberCount > 0, "maxClassMemberCount must be 
greater than 0");
+
+        if (code.length() <= maxMethodLength) {
+            return code;
+        }
+
         SplitKey key = new SplitKey(code, maxMethodLength, 
maxClassMemberCount);
         try {
             return SPLIT_CACHE.get(
                     key, () -> splitImpl(code, maxMethodLength, 
maxClassMemberCount));
-        } catch (ExecutionException | UncheckedExecutionException e) {
+        } catch (ExecutionException | UncheckedExecutionException | 
ExecutionError e) {
             Throwable cause = e.getCause() != null ? e.getCause() : e;
             throw new RuntimeException(
                     "JavaCodeSplitter failed. This is a bug. Please file an 
issue.", cause);
@@ -60,13 +69,6 @@ public class JavaCodeSplitter {
 
     @VisibleForTesting
     static String splitImpl(String code, int maxMethodLength, int 
maxClassMemberCount) {
-        checkArgument(code != null && !code.isEmpty(), "code cannot be empty");
-        checkArgument(maxMethodLength > 0, "maxMethodLength must be greater 
than 0");
-        checkArgument(maxClassMemberCount > 0, "maxClassMemberCount must be 
greater than 0");
-
-        if (code.length() <= maxMethodLength) {
-            return code;
-        }
 
         // reset counter so identical input yields identical output
         CodeSplitUtil.reset();
diff --git 
a/flink-table/flink-table-code-splitter/src/test/java/org/apache/flink/table/codesplit/JavaCodeSplitterTest.java
 
b/flink-table/flink-table-code-splitter/src/test/java/org/apache/flink/table/codesplit/JavaCodeSplitterTest.java
index 6baac8240f4..a327006e1bd 100644
--- 
a/flink-table/flink-table-code-splitter/src/test/java/org/apache/flink/table/codesplit/JavaCodeSplitterTest.java
+++ 
b/flink-table/flink-table-code-splitter/src/test/java/org/apache/flink/table/codesplit/JavaCodeSplitterTest.java
@@ -76,14 +76,12 @@ class JavaCodeSplitterTest {
     @Test
     public void testNullCode() {
         assertThatThrownBy(() -> JavaCodeSplitter.split(null, 4000, 10000))
-                .cause()
                 .hasMessage("code cannot be empty");
     }
 
     @Test
     public void testEmptyCode() {
         assertThatThrownBy(() -> JavaCodeSplitter.split("", 4000, 10000))
-                .cause()
                 .hasMessage("code cannot be empty");
     }
 
@@ -93,7 +91,6 @@ class JavaCodeSplitterTest {
                         () ->
                                 JavaCodeSplitter.split(
                                         "public interface DummyInterface {}", 
0, 10000))
-                .cause()
                 .hasMessage("maxMethodLength must be greater than 0");
     }
 
@@ -101,7 +98,6 @@ class JavaCodeSplitterTest {
     public void testWrongMaxClassMemberCount() {
         assertThatThrownBy(
                         () -> JavaCodeSplitter.split("public interface 
DummyInterface {}", 10, 0))
-                .cause()
                 .hasMessage("maxClassMemberCount must be greater than 0");
     }
 

Reply via email to