azkaban-developers

Merge pull request #355 from Victsm/validator-plugin Close

11/19/2014 1:11:36 AM

Details

diff --git a/azkaban-common/src/main/java/azkaban/project/validator/XmlValidatorManager.java b/azkaban-common/src/main/java/azkaban/project/validator/XmlValidatorManager.java
index 4851f88..8e56834 100644
--- a/azkaban-common/src/main/java/azkaban/project/validator/XmlValidatorManager.java
+++ b/azkaban-common/src/main/java/azkaban/project/validator/XmlValidatorManager.java
@@ -53,7 +53,7 @@ public class XmlValidatorManager implements ValidatorManager {
   public static final String DEFAULT_VALIDATOR_KEY = "Directory Flow";
 
   private static Map<String, Long> resourceTimestamps = new HashMap<String, Long>();
-  private static ClassLoader validatorLoader;
+  private static URLClassLoader validatorLoader;
 
   private Map<String, ProjectValidator> validators;
   private String validatorDirPath;
@@ -108,6 +108,15 @@ public class XmlValidatorManager implements ValidatorManager {
     }
 
     if (reloadResources) {
+      try {
+        if (validatorLoader != null) {
+          validatorLoader.close();
+        }
+      } catch (IOException e) {
+        logger.error("Cannot reload validator classloader because failure "
+            + "to close the validator classloader.");
+        // We do not throw the ValidatorManagerException because we do not want to crash Azkaban at runtime.
+      }
       validatorLoader = new URLClassLoader(resources.toArray(new URL[resources.size()]));
     }
   }