We had a couple of class loading issues in the past because people forgot to use the right classloader in flink-table. The SQL Client executor code hacks a classloader into the planner process by using wrapClassLoader that sets the threads context classloader.
Instead we should allow passing a class loader to environment settings. This class loader can be passed to the planner and can be stored in table environment, table config, etc. to have a consistent class loading behavior.
Having this in place should replace the need for Thread.currentThread().getContextClassLoader() in the entire flink-table module.