[
https://issues.apache.org/jira/browse/DRILL-5533?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16021331#comment-16021331
]
ASF GitHub Bot commented on DRILL-5533:
---------------------------------------
Github user sudheeshkatkam commented on a diff in the pull request:
https://github.com/apache/drill/pull/843#discussion_r118022413
--- 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 --
trace
> 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)