You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by ku...@apache.org on 2025/10/22 07:49:07 UTC

(flink-cdc) branch master updated: [FLINK-38540] Fix unintended object reuse in `TransformExpressionKey` (#4157)

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 <34...@users.noreply.github.com>
AuthorDate: Wed Oct 22 15:49:03 2025 +0800

    [FLINK-38540] Fix unintended object reuse in `TransformExpressionKey` (#4157)
    
    Signed-off-by: yuxiqian <34...@users.noreply.github.com>
---
 .../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(