yuxiqian opened a new pull request, #3533:
URL: https://github.com/apache/flink-cdc/pull/3533

   Occasionally, CDC composer ITcase will fail when running test cases 
consecutively, with the following error message:
   
   ```
   Caused by: java.lang.IllegalStateException: Trying to access closed 
classloader. Please check if you store classloaders directly or indirectly in 
static fields. If the stacktrace suggests that the leak occurs in a third party 
library and cannot be fixed immediately, you can disable this check with the 
configuration 'classloader.check-leaked-classloader'.
        at 
org.apache.flink.util.FlinkUserCodeClassLoaders$SafetyNetWrapperClassLoader.ensureInner(FlinkUserCodeClassLoaders.java:184)
        at 
org.apache.flink.util.FlinkUserCodeClassLoaders$SafetyNetWrapperClassLoader.loadClass(FlinkUserCodeClassLoaders.java:198)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:411)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at sun.misc.Unsafe.defineClass(Native Method)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at 
org.codehaus.janino.ExpressionEvaluator.evaluate(ExpressionEvaluator.java:541)
        at 
org.codehaus.janino.ExpressionEvaluator.evaluate(ExpressionEvaluator.java:533)
        at 
org.apache.flink.cdc.runtime.operators.transform.TransformFilterProcessor.process(TransformFilterProcessor.java:78)
        at 
org.apache.flink.cdc.runtime.operators.transform.PostTransformOperator.processFilter(PostTransformOperator.java:393)
        at 
org.apache.flink.cdc.runtime.operators.transform.PostTransformOperator.processDataChangeEvent(PostTransformOperator.java:335)
        at 
org.apache.flink.cdc.runtime.operators.transform.PostTransformOperator.processElement(PostTransformOperator.java:227)
        at 
org.apache.flink.streaming.runtime.tasks.OneInputStreamTask$StreamTaskNetworkOutput.emitRecord(OneInputStreamTask.java:237)
        at 
org.apache.flink.streaming.runtime.io.AbstractStreamTaskNetworkInput.processElement(AbstractStreamTaskNetworkInput.java:146)
        at 
org.apache.flink.streaming.runtime.io.AbstractStreamTaskNetworkInput.emitNext(AbstractStreamTaskNetworkInput.java:110)
        at 
org.apache.flink.streaming.runtime.io.StreamOneInputProcessor.processInput(StreamOneInputProcessor.java:65)
        at 
org.apache.flink.streaming.runtime.tasks.StreamTask.processInput(StreamTask.java:562)
        at 
org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.runMailboxLoop(MailboxProcessor.java:231)
        at 
org.apache.flink.streaming.runtime.tasks.StreamTask.runMailboxLoop(StreamTask.java:858)
        at 
org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:807)
        at 
org.apache.flink.runtime.taskmanager.Task.runWithSystemExitMonitoring(Task.java:953)
        at 
org.apache.flink.runtime.taskmanager.Task.restoreAndInvoke(Task.java:932)
        at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:746)
        at org.apache.flink.runtime.taskmanager.Task.run(Task.java:562)
        at java.lang.Thread.run(Thread.java:748)
   ```
   
   Turns out it was caused by the static field `COMPILED_EXPRESSION_CACHE` used 
for caching transform expression evaluators. `PostTransformOperator` tried to 
invalidate cahce by calling `Cache#cleanUp`, which doesn't have a well-defined 
behavior. Whether clearing cache or not is implementation-dependent[1]. Since 
`Cache#invalidateAll` will discard all entries immediately,  it should resolve 
such exception.
   
   [1] 
https://guava.dev/releases/21.0/api/docs/com/google/common/cache/Cache.html


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@flink.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to