You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@drill.apache.org by "Paul Rogers (JIRA)" <ji...@apache.org> on 2017/03/08 00:35:37 UTC
[jira] [Created] (DRILL-5331) NPE in
FunctionImplementationRegistry.findDrillFunction() if dynamic UDFs disabled
Paul Rogers created DRILL-5331:
----------------------------------
Summary: NPE in FunctionImplementationRegistry.findDrillFunction() if dynamic UDFs disabled
Key: DRILL-5331
URL: https://issues.apache.org/jira/browse/DRILL-5331
Project: Apache Drill
Issue Type: Bug
Affects Versions: 1.10.0
Reporter: Paul Rogers
Assignee: Paul Rogers
Fix For: 1.11.0
Drill provides the Dynamic UDF (DUDF) functionality. DUFDs can be disabled using the following option in {{ExecConstants}}:
{code}
String USE_DYNAMIC_UDFS_KEY = "exec.udf.use_dynamic";
BooleanValidator USE_DYNAMIC_UDFS = new BooleanValidator(USE_DYNAMIC_UDFS_KEY, true);
{code}
In a unit test, we created a setup in which we wish to use only the local function registry, no DUDF support is needed. Run the code. The following code is invoked when asking for a non-existent function:
{code}
public DrillFuncHolder findDrillFunction(FunctionResolver functionResolver, FunctionCall functionCall) {
...
if (holder == null) {
syncWithRemoteRegistry(version.get());
List<DrillFuncHolder> updatedFunctions = localFunctionRegistry.getMethods(newFunctionName, version);
holder = functionResolver.getBestMatch(updatedFunctions, functionCall);
}
{code}
The result is an NPE:
{code}
ERROR o.a.d.e.e.f.r.RemoteFunctionRegistry - Problem during trying to access remote function registry [registry]
java.lang.NullPointerException: null
at org.apache.drill.exec.expr.fn.registry.RemoteFunctionRegistry.getRegistryVersion(RemoteFunctionRegistry.java:119) ~[classes/:na]
{code}
The fix is simply to add a DUDF-enabled check:
{code}
if (holder == null) {
boolean useDynamicUdfs = optionManager != null && optionManager.getOption(ExecConstants.USE_DYNAMIC_UDFS);
if (useDynamicUdfs) {
syncWithRemoteRegistry(version.get());
...
{code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)