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

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


The following commit(s) were added to refs/heads/master by this push:
     new 57726d29b [FLINK-38540] Fix unintended object reuse in 
`TransformExpressionKey` (#4157)
57726d29b is described below

commit 57726d29b1bbbf3d19bf8841eb7a08c433d611a6
Author: yuxiqian <[email protected]>
AuthorDate: Wed Oct 22 15:49:03 2025 +0800

    [FLINK-38540] Fix unintended object reuse in `TransformExpressionKey` 
(#4157)
    
    Signed-off-by: yuxiqian <[email protected]>
---
 .../runtime/operators/transform/TransformExpressionCompiler.java   | 5 +++--
 .../cdc/runtime/operators/transform/TransformExpressionKey.java    | 7 ++++---
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git 
a/flink-cdc-runtime/src/main/java/org/apache/flink/cdc/runtime/operators/transform/TransformExpressionCompiler.java
 
b/flink-cdc-runtime/src/main/java/org/apache/flink/cdc/runtime/operators/transform/TransformExpressionCompiler.java
index e106aa0a3..4c6cb71e1 100644
--- 
a/flink-cdc-runtime/src/main/java/org/apache/flink/cdc/runtime/operators/transform/TransformExpressionCompiler.java
+++ 
b/flink-cdc-runtime/src/main/java/org/apache/flink/cdc/runtime/operators/transform/TransformExpressionCompiler.java
@@ -27,6 +27,7 @@ import 
org.apache.flink.shaded.guava31.com.google.common.cache.CacheBuilder;
 import org.codehaus.commons.compiler.CompileException;
 import org.codehaus.janino.ExpressionEvaluator;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -55,8 +56,8 @@ public class TransformExpressionCompiler {
                     () -> {
                         ExpressionEvaluator expressionEvaluator = new 
ExpressionEvaluator();
 
-                        List<String> argumentNames = key.getArgumentNames();
-                        List<Class<?>> argumentClasses = 
key.getArgumentClasses();
+                        List<String> argumentNames = new 
ArrayList<>(key.getArgumentNames());
+                        List<Class<?>> argumentClasses = new 
ArrayList<>(key.getArgumentClasses());
 
                         for (UserDefinedFunctionDescriptor udfFunction : 
udfDescriptors) {
                             argumentNames.add("__instanceOf" + 
udfFunction.getClassName());
diff --git 
a/flink-cdc-runtime/src/main/java/org/apache/flink/cdc/runtime/operators/transform/TransformExpressionKey.java
 
b/flink-cdc-runtime/src/main/java/org/apache/flink/cdc/runtime/operators/transform/TransformExpressionKey.java
index 33605d994..6ece097fc 100644
--- 
a/flink-cdc-runtime/src/main/java/org/apache/flink/cdc/runtime/operators/transform/TransformExpressionKey.java
+++ 
b/flink-cdc-runtime/src/main/java/org/apache/flink/cdc/runtime/operators/transform/TransformExpressionKey.java
@@ -18,6 +18,7 @@
 package org.apache.flink.cdc.runtime.operators.transform;
 
 import java.io.Serializable;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -62,11 +63,11 @@ public class TransformExpressionKey implements Serializable 
{
     }
 
     public List<String> getArgumentNames() {
-        return argumentNames;
+        return Collections.unmodifiableList(argumentNames);
     }
 
     public List<Class<?>> getArgumentClasses() {
-        return argumentClasses;
+        return Collections.unmodifiableList(argumentClasses);
     }
 
     public Class<?> getReturnClass() {
@@ -74,7 +75,7 @@ public class TransformExpressionKey implements Serializable {
     }
 
     public Map<String, String> getColumnNameMap() {
-        return columnNameMap;
+        return Collections.unmodifiableMap(columnNameMap);
     }
 
     public static TransformExpressionKey of(

Reply via email to