diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/CoprocessorClassLoader.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/CoprocessorClassLoader.java index 19f59dc..8159b8e 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/CoprocessorClassLoader.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/CoprocessorClassLoader.java @@ -154,7 +154,9 @@ public class CoprocessorClassLoader extends ClassLoaderBase { if (!parentDirLockSet.contains(parentDirStr)) { Path parentDir = new Path(parentDirStr); FileSystem fs = FileSystem.getLocal(conf); - fs.delete(parentDir, true); // it's ok if the dir doesn't exist now + if (fs.exists(parentDir) && !fs.getFileStatus(parentDir).isDirectory()) { + fs.delete(parentDir, true); + } parentDirLockSet.add(parentDirStr); if (!fs.mkdirs(parentDir) && !fs.getFileStatus(parentDir).isDirectory()) { throw new RuntimeException("Failed to create local dir " + parentDirStr diff --git a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestCoprocessorClassLoader.java b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestCoprocessorClassLoader.java index 967d272..f126d94 100644 --- a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestCoprocessorClassLoader.java +++ b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestCoprocessorClassLoader.java @@ -50,26 +50,6 @@ public class TestCoprocessorClassLoader { } @Test - public void testCleanupOldJars() throws Exception { - String className = "TestCleanupOldJars"; - String folder = TEST_UTIL.getDataTestDir().toString(); - File jarFile = ClassLoaderTestHelper.buildJar( - folder, className, null, ClassLoaderTestHelper.localDirPath(conf)); - File tmpJarFile = new File(jarFile.getParent(), "/tmp/" + className + ".test.jar"); - if (tmpJarFile.exists()) tmpJarFile.delete(); - assertFalse("tmp jar file should not exist", tmpJarFile.exists()); - IOUtils.copyBytes(new FileInputStream(jarFile), - new FileOutputStream(tmpJarFile), conf, true); - assertTrue("tmp jar file should be created", tmpJarFile.exists()); - Path path = new Path(jarFile.getAbsolutePath()); - ClassLoader parent = TestCoprocessorClassLoader.class.getClassLoader(); - CoprocessorClassLoader.parentDirLockSet.clear(); // So that clean up can be triggered - ClassLoader classLoader = CoprocessorClassLoader.getClassLoader(path, parent, "111", conf); - assertNotNull("Classloader should be created", classLoader); - assertFalse("tmp jar file should be removed", tmpJarFile.exists()); - } - - @Test public void testLibJarName() throws Exception { checkingLibJarName("TestLibJarName.jar", "/lib/"); }