Due to a problem with Calcite and the unloading of classes, user-code classloaders that include Calcite cannot be garbage collected. This is a problem for long-running clusters that execute multiple Table API / SQL programs with fat JARs that include the flink-table dependency. Each executed program comes with an own user-code classloader that cannot be cleaned up later.
As a workaround, we recommend to copy the flink-table dependency into the ./lib folder. However, we do not have a jar file with all required transitive dependencies (Calcite, Janino, etc). Hence, users would need to build this jar file themselves or copy all jars into ./lib.
This issue is about creating a jar-with-dependencies and adding it to the ./opt folder. Users can then copy the jar file from ./opt to ./lib to include the table API in the classpath of Flink.