drill-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DRILL-5533) Fix flag assignment in FunctionInitializer.checkInit() method
Date Wed, 24 May 2017 08:22:04 GMT

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

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

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

    https://github.com/apache/drill/pull/843#discussion_r118184323
  
    --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/FunctionInitializer.java
---
    @@ -119,33 +117,35 @@ private void checkInit() {
         }
       }
     
    -  private CompilationUnit get(Class<?> c) throws IOException {
    -    String path = c.getName();
    +  /**
    +   * Using class name generates path to class source code (*.java),
    +   * reads its content as string and parses it into {@link org.codehaus.janino.Java.CompilationUnit}.
    +   *
    +   * @param clazz function class
    +   * @return compilation unit
    +   * @throws IOException if did not find class or could not load it
    +   */
    +  public CompilationUnit convertToCompilationUnit(Class<?> clazz) throws IOException
{
    +    String path = clazz.getName();
         path = path.replaceFirst("\\$.*", "");
         path = path.replace(".", FileUtils.separator);
         path = "/" + path + ".java";
    -    CompilationUnit cu = functionUnits.get(path);
    -    if (cu != null) {
    -      return cu;
    -    }
     
    -    try (InputStream is = c.getResourceAsStream(path)) {
    +    logger.debug("Loading function code from the {}", path);
    --- End diff --
    
    Done.


> Fix flag assignment in FunctionInitializer.checkInit() method
> -------------------------------------------------------------
>
>                 Key: DRILL-5533
>                 URL: https://issues.apache.org/jira/browse/DRILL-5533
>             Project: Apache Drill
>          Issue Type: Bug
>    Affects Versions: 1.10.0
>            Reporter: Arina Ielchiieva
>            Assignee: Arina Ielchiieva
>            Priority: Minor
>
> FunctionInitializer.checkInit() method uses DCL to ensure that function body is loaded
only once. But flag parameter is never updated and all threads are entering synchronized block.
> Also FunctionInitializer.getImports() always returns empty list.
> https://github.com/apache/drill/blob/3e8b01d5b0d3013e3811913f0fd6028b22c1ac3f/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/FunctionInitializer.java
> Changes:
> 1. Fix DCL in FunctionInitializer.checkInit() method (update flag parameter  when function
body is loaded).
> 2. Fix ImportGrabber.getImports() method to return list with imports.
> 3. Add unit tests for FunctionInitializer.
> 4. Minor refactoring (rename methods, add javadoc).



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message