You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2017/12/29 09:28:20 UTC
[03/15] ignite git commit: ignite-6745 URLClassLoader.getURLs()
usages are removed
ignite-6745 URLClassLoader.getURLs() usages are removed
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ee2a6f7c
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ee2a6f7c
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ee2a6f7c
Branch: refs/heads/ignite-zk
Commit: ee2a6f7c3f2e3c9bd8dc61c8dbdf171e933d9481
Parents: 33ad0ad
Author: Andrey Gura <ag...@apache.org>
Authored: Wed Dec 27 18:50:12 2017 +0300
Committer: Andrey Gura <ag...@apache.org>
Committed: Thu Dec 28 16:12:23 2017 +0300
----------------------------------------------------------------------
.../ignite/codegen/MessageCodeGenerator.java | 8 +--
.../junits/IgniteCompatibilityAbstractTest.java | 7 +-
.../junits/IgniteCompatibilityNodeRunner.java | 15 ++---
.../ignite/internal/binary/BinaryContext.java | 66 +++++++++----------
.../processors/hadoop/HadoopClassLoader.java | 5 +-
.../ignite/internal/util/IgniteUtils.java | 61 ++++++++++++++++-
.../hadoop/HadoopTestClassLoader.java | 5 +-
.../ignite/tools/classgen/ClassesGenerator.java | 69 ++++++++++++++++++--
.../uri/GridUriDeploymentFileProcessor.java | 28 ++++----
9 files changed, 186 insertions(+), 78 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ee2a6f7c/modules/codegen/src/main/java/org/apache/ignite/codegen/MessageCodeGenerator.java
----------------------------------------------------------------------
diff --git a/modules/codegen/src/main/java/org/apache/ignite/codegen/MessageCodeGenerator.java b/modules/codegen/src/main/java/org/apache/ignite/codegen/MessageCodeGenerator.java
index 3ea0c81..99cf849 100644
--- a/modules/codegen/src/main/java/org/apache/ignite/codegen/MessageCodeGenerator.java
+++ b/modules/codegen/src/main/java/org/apache/ignite/codegen/MessageCodeGenerator.java
@@ -26,7 +26,6 @@ import java.io.FileWriter;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.net.URL;
-import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.Collection;
@@ -39,13 +38,12 @@ import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.UUID;
+import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.internal.GridCodegenConverter;
import org.apache.ignite.internal.GridDirectCollection;
import org.apache.ignite.internal.GridDirectMap;
import org.apache.ignite.internal.GridDirectTransient;
import org.apache.ignite.internal.IgniteCodeGeneratingFail;
-import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
-import org.apache.ignite.internal.processors.cache.version.GridCacheVersionEx;
import org.apache.ignite.internal.util.typedef.internal.SB;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteUuid;
@@ -879,9 +877,9 @@ public class MessageCodeGenerator {
}
});
- URLClassLoader ldr = (URLClassLoader)getClass().getClassLoader();
+ ClassLoader ldr = getClass().getClassLoader();
- for (URL url : ldr.getURLs()) {
+ for (URL url : IgniteUtils.classLoaderUrls(ldr)) {
File file = new File(url.toURI());
int prefixLen = file.getPath().length() + 1;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ee2a6f7c/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/IgniteCompatibilityAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/IgniteCompatibilityAbstractTest.java b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/IgniteCompatibilityAbstractTest.java
index 321da12..8202c1b 100644
--- a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/IgniteCompatibilityAbstractTest.java
+++ b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/IgniteCompatibilityAbstractTest.java
@@ -19,7 +19,6 @@ package org.apache.ignite.compatibility.testframework.junits;
import java.io.File;
import java.net.URL;
-import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.UUID;
@@ -32,6 +31,7 @@ import org.apache.ignite.compatibility.testframework.util.MavenUtils;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.processors.resource.GridSpringResourceContext;
+import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteInClosure;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
@@ -164,12 +164,13 @@ public abstract class IgniteCompatibilityAbstractTest extends GridCommonAbstract
filteredJvmArgs.add(arg);
}
- URLClassLoader ldr = (URLClassLoader)CLASS_LOADER;
+ ClassLoader ldr = CLASS_LOADER;
final Collection<Dependency> dependencies = getDependencies(ver);
StringBuilder pathBuilder = new StringBuilder();
- for (URL url : ldr.getURLs()) {
+
+ for (URL url : IgniteUtils.classLoaderUrls(ldr)) {
String path = url.getPath();
boolean excluded = false;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ee2a6f7c/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/IgniteCompatibilityNodeRunner.java
----------------------------------------------------------------------
diff --git a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/IgniteCompatibilityNodeRunner.java b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/IgniteCompatibilityNodeRunner.java
index 7c9a511..7a72ea6 100644
--- a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/IgniteCompatibilityNodeRunner.java
+++ b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/IgniteCompatibilityNodeRunner.java
@@ -23,7 +23,6 @@ import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.net.URL;
-import java.net.URLClassLoader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
@@ -33,6 +32,7 @@ import org.apache.ignite.Ignite;
import org.apache.ignite.Ignition;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.util.GridJavaProcess;
+import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteInClosure;
@@ -137,9 +137,8 @@ public class IgniteCompatibilityNodeRunner extends IgniteNodeRunner {
X.println("Ignite startup/Init closure/post configuration closure is probably hanging at");
- for (StackTraceElement ste : mainThread.getStackTrace()) {
+ for (StackTraceElement ste : mainThread.getStackTrace())
X.println("\t" + ste.toString());
- }
X.println("\nDumping classpath");
dumpClasspath();
@@ -157,14 +156,10 @@ public class IgniteCompatibilityNodeRunner extends IgniteNodeRunner {
* Dumps classpath to output stream.
*/
private static void dumpClasspath() {
- final ClassLoader clsLdr = IgniteCompatibilityNodeRunner.class.getClassLoader();
- if (clsLdr instanceof URLClassLoader) {
- URLClassLoader ldr = (URLClassLoader)clsLdr;
+ ClassLoader clsLdr = IgniteCompatibilityNodeRunner.class.getClassLoader();
- for (URL url : ldr.getURLs()) {
- X.println("Classpath url: [" + url.getPath() + "]");
- }
- }
+ for (URL url : IgniteUtils.classLoaderUrls(clsLdr))
+ X.println("Classpath url: [" + url.getPath() + ']');
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/ee2a6f7c/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
index 5be1d39..b161129 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
@@ -23,7 +23,6 @@ import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.net.URISyntaxException;
import java.net.URL;
-import java.net.URLClassLoader;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.ArrayList;
@@ -48,6 +47,7 @@ import java.util.jar.JarFile;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
+import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.binary.BinaryBasicIdMapper;
import org.apache.ignite.binary.BinaryBasicNameMapper;
import org.apache.ignite.binary.BinaryIdMapper;
@@ -553,55 +553,53 @@ public class BinaryContext {
ClassLoader ldr = U.gridClassLoader();
- if (ldr instanceof URLClassLoader) {
- String pkgPath = pkgName.replaceAll("\\.", "/");
+ String pkgPath = pkgName.replaceAll("\\.", "/");
- URL[] urls = ((URLClassLoader)ldr).getURLs();
+ URL[] urls = IgniteUtils.classLoaderUrls(ldr);
- for (URL url : urls) {
- String proto = url.getProtocol().toLowerCase();
+ for (URL url : urls) {
+ String proto = url.getProtocol().toLowerCase();
- if ("file".equals(proto)) {
- try {
- File cpElement = new File(url.toURI());
+ if ("file".equals(proto)) {
+ try {
+ File cpElement = new File(url.toURI());
- if (cpElement.isDirectory()) {
- File pkgDir = new File(cpElement, pkgPath);
+ if (cpElement.isDirectory()) {
+ File pkgDir = new File(cpElement, pkgPath);
- if (pkgDir.isDirectory()) {
- for (File file : pkgDir.listFiles()) {
- String fileName = file.getName();
+ if (pkgDir.isDirectory()) {
+ for (File file : pkgDir.listFiles()) {
+ String fileName = file.getName();
- if (file.isFile() && fileName.toLowerCase().endsWith(".class"))
- clsNames.add(pkgName + '.' + fileName.substring(0, fileName.length() - 6));
- }
+ if (file.isFile() && fileName.toLowerCase().endsWith(".class"))
+ clsNames.add(pkgName + '.' + fileName.substring(0, fileName.length() - 6));
}
}
- else if (cpElement.isFile()) {
- try {
- JarFile jar = new JarFile(cpElement);
+ }
+ else if (cpElement.isFile()) {
+ try {
+ JarFile jar = new JarFile(cpElement);
- Enumeration<JarEntry> entries = jar.entries();
+ Enumeration<JarEntry> entries = jar.entries();
- while (entries.hasMoreElements()) {
- String entry = entries.nextElement().getName();
+ while (entries.hasMoreElements()) {
+ String entry = entries.nextElement().getName();
- if (entry.startsWith(pkgPath) && entry.endsWith(".class")) {
- String clsName = entry.substring(pkgPath.length() + 1, entry.length() - 6);
+ if (entry.startsWith(pkgPath) && entry.endsWith(".class")) {
+ String clsName = entry.substring(pkgPath.length() + 1, entry.length() - 6);
- if (!clsName.contains("/") && !clsName.contains("\\"))
- clsNames.add(pkgName + '.' + clsName);
- }
+ if (!clsName.contains("/") && !clsName.contains("\\"))
+ clsNames.add(pkgName + '.' + clsName);
}
}
- catch (IOException ignored) {
- // No-op.
- }
+ }
+ catch (IOException ignored) {
+ // No-op.
}
}
- catch (URISyntaxException ignored) {
- // No-op.
- }
+ }
+ catch (URISyntaxException ignored) {
+ // No-op.
}
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ee2a6f7c/modules/core/src/main/java/org/apache/ignite/internal/processors/hadoop/HadoopClassLoader.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/hadoop/HadoopClassLoader.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/hadoop/HadoopClassLoader.java
index b1b4d18..24367f5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/hadoop/HadoopClassLoader.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/hadoop/HadoopClassLoader.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.hadoop;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.internal.util.ClassCache;
+import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
@@ -60,10 +61,10 @@ public class HadoopClassLoader extends URLClassLoader implements ClassCache {
"org.apache.ignite.internal.processors.hadoop.impl.v2.HadoopShutdownHookManager";
/** */
- private static final URLClassLoader APP_CLS_LDR = (URLClassLoader)HadoopClassLoader.class.getClassLoader();
+ private static final ClassLoader APP_CLS_LDR = HadoopClassLoader.class.getClassLoader();
/** */
- private static final Collection<URL> appJars = F.asList(APP_CLS_LDR.getURLs());
+ private static final Collection<URL> appJars = F.asList(IgniteUtils.classLoaderUrls(APP_CLS_LDR));
/** Mutex for native libraries initialization. */
private static final Object LIBS_MUX = new Object();
http://git-wip-us.apache.org/repos/asf/ignite/blob/ee2a6f7c/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
index b3ca6ff..6fb19a1 100755
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
@@ -240,8 +240,6 @@ import org.apache.ignite.transactions.TransactionTimeoutException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jsr166.ConcurrentHashMap8;
-import sun.misc.SharedSecrets;
-import sun.misc.URLClassPath;
import sun.misc.Unsafe;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_DISABLE_HOSTNAME_VERIFIER;
@@ -527,6 +525,21 @@ public abstract class IgniteUtils {
/** */
private static final boolean assertionsEnabled;
+ /** Empty URL array. */
+ private static final URL[] EMPTY_URL_ARR = new URL[0];
+
+ /** Builtin class loader class.
+ *
+ * Note: needs for compatibility with Java 9.
+ */
+ private static final Class bltClsLdrCls = defaultClassLoaderClass();
+
+ /** Url class loader field.
+ *
+ * Note: needs for compatibility with Java 9.
+ */
+ private static final Field urlClsLdrField = urlClassLoaderField();
+
/*
* Initializes enterprise check.
*/
@@ -7536,6 +7549,50 @@ public abstract class IgniteUtils {
}
/**
+ * Returns URLs of class loader
+ *
+ * @param clsLdr Class loader.
+ */
+ public static URL[] classLoaderUrls(ClassLoader clsLdr) {
+ if (clsLdr == null)
+ return EMPTY_URL_ARR;
+ else if (clsLdr instanceof URLClassLoader)
+ return ((URLClassLoader)clsLdr).getURLs();
+ else if (bltClsLdrCls != null && urlClsLdrField != null && bltClsLdrCls.isAssignableFrom(clsLdr.getClass())) {
+ try {
+ return ((URLClassLoader)urlClsLdrField.get(clsLdr)).getURLs();
+ }
+ catch (IllegalAccessException e) {
+ return EMPTY_URL_ARR;
+ }
+ }
+ else
+ return EMPTY_URL_ARR;
+ }
+
+ /** */
+ @Nullable private static Class defaultClassLoaderClass() {
+ try {
+ return Class.forName("jdk.internal.loader.BuiltinClassLoader");
+ }
+ catch (ClassNotFoundException e) {
+ return null;
+ }
+ }
+
+ /** */
+ @Nullable private static Field urlClassLoaderField() {
+ try {
+ Class cls = defaultClassLoaderClass();
+
+ return cls == null ? null : cls.getDeclaredField("ucp");
+ }
+ catch (NoSuchFieldException e) {
+ return null;
+ }
+ }
+
+ /**
* Sleeps for given number of milliseconds.
*
* @param ms Time to sleep.
http://git-wip-us.apache.org/repos/asf/ignite/blob/ee2a6f7c/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/HadoopTestClassLoader.java
----------------------------------------------------------------------
diff --git a/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/HadoopTestClassLoader.java b/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/HadoopTestClassLoader.java
index 91ee0c9..2ba67c8 100644
--- a/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/HadoopTestClassLoader.java
+++ b/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/HadoopTestClassLoader.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.processors.hadoop;
import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.X;
@@ -32,10 +33,10 @@ import java.util.List;
*/
public class HadoopTestClassLoader extends URLClassLoader {
/** Parent class loader. */
- private static final URLClassLoader APP_CLS_LDR = (URLClassLoader)HadoopTestClassLoader.class.getClassLoader();
+ private static final ClassLoader APP_CLS_LDR = HadoopTestClassLoader.class.getClassLoader();
/** */
- private static final Collection<URL> APP_JARS = F.asList(APP_CLS_LDR.getURLs());
+ private static final Collection<URL> APP_JARS = F.asList(IgniteUtils.classLoaderUrls(APP_CLS_LDR));
/** All participating URLs. */
private static final URL[] URLS;
http://git-wip-us.apache.org/repos/asf/ignite/blob/ee2a6f7c/modules/tools/src/main/java/org/apache/ignite/tools/classgen/ClassesGenerator.java
----------------------------------------------------------------------
diff --git a/modules/tools/src/main/java/org/apache/ignite/tools/classgen/ClassesGenerator.java b/modules/tools/src/main/java/org/apache/ignite/tools/classgen/ClassesGenerator.java
index ecc0654..2be847b 100644
--- a/modules/tools/src/main/java/org/apache/ignite/tools/classgen/ClassesGenerator.java
+++ b/modules/tools/src/main/java/org/apache/ignite/tools/classgen/ClassesGenerator.java
@@ -35,7 +35,6 @@ import java.util.Comparator;
import java.util.TreeSet;
import java.util.jar.JarEntry;
import java.util.jar.JarInputStream;
-
/**
* Serialized classes generator.
*/
@@ -51,6 +50,21 @@ public class ClassesGenerator {
"org.apache.ignite.tools"
};
+ /** Empty URL array. */
+ private static final URL[] EMPTY_URL_ARR = new URL[0];
+
+ /** Builtin class loader class.
+ *
+ * Note: needs for compatibility with Java 9.
+ */
+ private static final Class bltClsLdrCls = defaultClassLoaderClass();
+
+ /** Url class loader field.
+ *
+ * Note: needs for compatibility with Java 9.
+ */
+ private static final Field urlClsLdrField = urlClassLoaderField();
+
/**
* @param args Arguments.
* @throws Exception In case of error.
@@ -69,9 +83,6 @@ public class ClassesGenerator {
}
/** */
- private final URLClassLoader ldr = (URLClassLoader)getClass().getClassLoader();
-
- /** */
private final Collection<Class> classes = new TreeSet<>(new Comparator<Class>() {
@Override public int compare(Class c1, Class c2) {
return c1.getName().compareTo(c2.getName());
@@ -112,7 +123,8 @@ public class ClassesGenerator {
private void generate() throws Exception {
System.out.println("Generating classnames.properties...");
- for (URL url : ldr.getURLs())
+
+ for (URL url : classLoaderUrls(getClass().getClassLoader()))
processUrl(url);
if (!errs.isEmpty()) {
@@ -185,6 +197,51 @@ public class ClassesGenerator {
}
/**
+ * Returns URLs of class loader
+ *
+ * @param clsLdr Class loader.
+ */
+ public static URL[] classLoaderUrls(ClassLoader clsLdr) {
+ if (clsLdr == null)
+ return EMPTY_URL_ARR;
+ else if (clsLdr instanceof URLClassLoader)
+ return ((URLClassLoader)clsLdr).getURLs();
+ else if (bltClsLdrCls != null && urlClsLdrField != null && bltClsLdrCls.isAssignableFrom(clsLdr.getClass())) {
+ try {
+ return ((URLClassLoader)urlClsLdrField.get(clsLdr)).getURLs();
+ }
+ catch (IllegalAccessException e) {
+ return EMPTY_URL_ARR;
+ }
+ }
+ else
+ return EMPTY_URL_ARR;
+ }
+
+ /** */
+ private static Class defaultClassLoaderClass() {
+ try {
+ return Class.forName("jdk.internal.loader.BuiltinClassLoader");
+ }
+ catch (ClassNotFoundException e) {
+ return null;
+ }
+ }
+
+ /** */
+ private static Field urlClassLoaderField() {
+ try {
+ Class cls = defaultClassLoaderClass();
+
+ return cls == null ? null : cls.getDeclaredField("ucp");
+ }
+ catch (NoSuchFieldException e) {
+ return null;
+ }
+ }
+
+
+ /**
* @param path File path.
* @param prefixLen Prefix length.
* @throws Exception In case of error.
@@ -209,7 +266,7 @@ public class ClassesGenerator {
}
if (included) {
- Class<?> cls = Class.forName(clsName, false, ldr);
+ Class<?> cls = Class.forName(clsName, false, getClass().getClassLoader());
if (Serializable.class.isAssignableFrom(cls) &&
!(cls.getName().endsWith("Future") || cls.getName().endsWith("FutureAdapter"))) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/ee2a6f7c/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentFileProcessor.java
----------------------------------------------------------------------
diff --git a/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentFileProcessor.java b/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentFileProcessor.java
index d82a57e..3564f2f 100644
--- a/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentFileProcessor.java
+++ b/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentFileProcessor.java
@@ -35,6 +35,7 @@ import org.apache.commons.codec.digest.DigestUtils;
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.compute.ComputeTask;
+import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.spi.IgniteSpiException;
@@ -292,29 +293,28 @@ final class GridUriDeploymentFileProcessor {
static void cleanupUnit(ClassLoader clsLdr, IgniteLogger log) {
assert clsLdr != null;
assert log != null;
+ assert clsLdr instanceof URLClassLoader;
- if (clsLdr instanceof URLClassLoader) {
- URLClassLoader clsLdr0 = (URLClassLoader)clsLdr;
+ URLClassLoader clsLdr0 = (URLClassLoader)clsLdr;
- U.close(clsLdr0, log);
+ U.close(clsLdr0, log);
- try {
- URL url = clsLdr0.getURLs()[0];
+ try {
+ URL url = IgniteUtils.classLoaderUrls(clsLdr)[0];
- File dir = new File(url.toURI());
+ File dir = new File(url.toURI());
- U.delete(dir);
+ U.delete(dir);
- if (dir.getName().startsWith("dirzip_")) {
- File jarFile = new File(dir.getParentFile(), dir.getName().substring(7));
+ if (dir.getName().startsWith("dirzip_")) {
+ File jarFile = new File(dir.getParentFile(), dir.getName().substring(7));
- U.delete(jarFile);
- }
- }
- catch (Exception e) {
- U.error(log, "Failed to cleanup unit [clsLdr=" + clsLdr + ']', e);
+ U.delete(jarFile);
}
}
+ catch (Exception e) {
+ U.error(log, "Failed to cleanup unit [clsLdr=" + clsLdr + ']', e);
+ }
}
/**