[
https://issues.apache.org/jira/browse/DRILL-5290?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15886333#comment-15886333
]
ASF GitHub Bot commented on DRILL-5290:
---------------------------------------
Github user ppadma commented on a diff in the pull request:
https://github.com/apache/drill/pull/757#discussion_r103285068
--- Diff:
exec/java-exec/src/main/java/org/apache/drill/exec/ExecConstants.java ---
@@ -413,4 +413,8 @@
String DYNAMIC_UDF_SUPPORT_ENABLED = "exec.udf.enable_dynamic_support";
BooleanValidator DYNAMIC_UDF_SUPPORT_ENABLED_VALIDATOR = new
BooleanValidator(DYNAMIC_UDF_SUPPORT_ENABLED, true, true);
+
+ String USE_DYNAMIC_UDFS = "exec.udf.use_dynamic";
--- End diff --
ok, we need to use readWriteLocks if we update the table each time a
function gets added/removed. That is unnecessary overhead and will cause
contention with concurrency. One option is to split the table into two, one for
built-in functions (which can be accessed without locks) and other for dynamic
functions. That will be a bigger change and like I mentioned before, is not
considered worth the effort.
> Provide an option to build operator table once for built-in static functions
> and reuse it across queries.
> ---------------------------------------------------------------------------------------------------------
>
> Key: DRILL-5290
> URL: https://issues.apache.org/jira/browse/DRILL-5290
> Project: Apache Drill
> Issue Type: Improvement
> Affects Versions: 1.9.0
> Reporter: Padma Penumarthy
> Assignee: Padma Penumarthy
> Labels: doc-impacting
> Fix For: 1.10.0
>
>
> Currently, DrillOperatorTable which contains standard SQL operators and
> functions and Drill User Defined Functions (UDFs) (built-in and dynamic) gets
> built for each query as part of creating QueryContext. This is an expensive
> operation ( ~30 msec to build) and allocates ~2M on heap for each query. For
> high throughput, low latency operational queries, we quickly run out of heap
> memory, causing JVM hangs. Build operator table once during startup for
> static built-in functions and save in DrillbitContext, so we can reuse it
> across queries.
> Provide a system/session option to not use dynamic UDFs so we can use the
> operator table saved in DrillbitContext and avoid building each time.
> *Please note, changes are adding new option exec.udf.use_dynamic which needs
> to be documented.*
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)