[ 
https://issues.apache.org/jira/browse/DRILL-4726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15481520#comment-15481520
 ] 

ASF GitHub Bot commented on DRILL-4726:
---------------------------------------

Github user arina-ielchiieva commented on a diff in the pull request:

    https://github.com/apache/drill/pull/574#discussion_r78292107
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/FunctionImplementationRegistry.java
 ---
    @@ -186,4 +226,105 @@ public boolean isFunctionComplexOutput(String name) {
         return false;
       }
     
    +  public RemoteFunctionRegistry getRemoteFunctionRegistry() {
    +    return remoteFunctionRegistry;
    +  }
    +
    +  public List<Func> validate(Path path) throws IOException {
    +    URL url = path.toUri().toURL();
    +    URL[] urls = {url};
    +    ClassLoader classLoader = new URLClassLoader(urls);
    +    return drillFuncRegistry.validate(path.getName(), scan(classLoader, 
path, urls));
    +  }
    +
    +  public void register(String jarName, ScanResult classpathScan, 
ClassLoader classLoader) {
    +    drillFuncRegistry.register(jarName, classpathScan, classLoader);
    +  }
    +
    +  public void unregister(String jarName) {
    +    drillFuncRegistry.unregister(jarName);
    +  }
    +
    +  /**
    +   * Loads all missing functions from remote registry.
    +   * Compares list of already registered jars and remote jars, loads 
missing jars.
    +   * Missing jars are stores in local DRILL_UDF_DIR.
    +   *
    +   * @return true if at least functions from one jar were loaded
    +   */
    +  public boolean loadRemoteFunctions() {
    +    List<String> missingJars = Lists.newArrayList();
    +    Registry registry = remoteFunctionRegistry.getRegistry();
    +
    +    List<String> localJars = drillFuncRegistry.getAllJarNames();
    +    for (Jar jar : registry.getJarList()) {
    +      if (!localJars.contains(jar.getName())) {
    +        missingJars.add(jar.getName());
    +      }
    +    }
    +
    +    for (String jarName : missingJars) {
    +      try {
    +        Path localUdfArea = new Path(new File(getUdfDir()).toURI());
    --- End diff --
    
    Local UDF area must exists since we will create it in drill-config.sh, but 
I can add appropriate checks in getUdfDir method.


> Dynamic UDFs support
> --------------------
>
>                 Key: DRILL-4726
>                 URL: https://issues.apache.org/jira/browse/DRILL-4726
>             Project: Apache Drill
>          Issue Type: New Feature
>    Affects Versions: 1.6.0
>            Reporter: Arina Ielchiieva
>            Assignee: Arina Ielchiieva
>             Fix For: Future
>
>
> Allow register UDFs without  restart of Drillbits.
> Design is described in document below:
> https://docs.google.com/document/d/1FfyJtWae5TLuyheHCfldYUpCdeIezR2RlNsrOTYyAB4/edit?usp=sharing
>  



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to