This is an automated email from the ASF dual-hosted git repository.
lzljs3620320 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-paimon.git
The following commit(s) were added to refs/heads/master by this push:
new 07b702e17 [core] Try to delete plugin jar (#1964)
07b702e17 is described below
commit 07b702e17eec83b4b25bd7dbda3bc6ae4a27d9dd
Author: Jingsong Lee <[email protected]>
AuthorDate: Fri Sep 8 11:23:57 2023 +0800
[core] Try to delete plugin jar (#1964)
---
.../main/java/org/apache/paimon/plugin/PluginLoader.java | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git
a/paimon-common/src/main/java/org/apache/paimon/plugin/PluginLoader.java
b/paimon-common/src/main/java/org/apache/paimon/plugin/PluginLoader.java
index 2270e4a07..019b7e25c 100644
--- a/paimon-common/src/main/java/org/apache/paimon/plugin/PluginLoader.java
+++ b/paimon-common/src/main/java/org/apache/paimon/plugin/PluginLoader.java
@@ -18,6 +18,7 @@
package org.apache.paimon.plugin;
+import org.apache.paimon.utils.FileIOUtils;
import org.apache.paimon.utils.IOUtils;
import org.apache.paimon.utils.LocalFileUtils;
import org.apache.paimon.utils.StringUtils;
@@ -61,7 +62,9 @@ public class PluginLoader {
private static final String[] COMPONENT_CLASSPATH = new String[]
{"org.apache.paimon"};
- private final ClassLoader submoduleClassLoader;
+ private final Path delegateJar;
+
+ private final ComponentClassLoader submoduleClassLoader;
public PluginLoader(String jarName) {
try {
@@ -71,7 +74,7 @@ public class PluginLoader {
.orElseGet(() ->
Paths.get(System.getProperty("java.io.tmpdir")));
Files.createDirectories(
LocalFileUtils.getTargetPathIfContainsSymbolicPath(tmpDirectory));
- Path delegateJar =
+ delegateJar =
extractResource(
jarName,
ownerClassLoader,
@@ -139,6 +142,12 @@ public class PluginLoader {
return submoduleClassLoader;
}
+ @Override
+ protected void finalize() throws IOException {
+ submoduleClassLoader.close();
+ FileIOUtils.deleteFileOrDirectory(delegateJar.toFile());
+ }
+
private static Optional<Path> tmpDirectoryFromYarn() {
String localDirs = System.getenv("LOCAL_DIRS");
if (!StringUtils.isBlank(localDirs)) {