Volodymyr Vysotskyi created DRILL-7297:
------------------------------------------

             Summary: Query hangs in planning stage when Error is thrown
                 Key: DRILL-7297
                 URL: https://issues.apache.org/jira/browse/DRILL-7297
             Project: Apache Drill
          Issue Type: Bug
    Affects Versions: 1.16.0
            Reporter: Volodymyr Vysotskyi


Query hangs in the planning stage when Error (not OOM or AssertionError) is 
thrown during query planning. After canceling the query it will stay in 
Cancellation Requested state.

Such error may be thrown due to the mistake in the code, including UDF. Since 
the user may provide custom UDFs, Drill should be able to handle such cases 
also.

Steps to reproduce this issue:

1. Create UDF which throws Error in either {{eval()}} or {{setup()}} method 
(instructions how to create custom UDF may be found 
[here|https://drill.apache.org/docs/tutorial-develop-a-simple-function/].
 2. Register custom UDF which throws an error (instruction is 
[here|https://drill.apache.org/docs/adding-custom-functions-to-drill-introduction/]).
 3. Run the query with this UDF.

After submitting the query, the following stack trace is printed:
{noformat}
Exception in thread "drill-executor-1" java.lang.Error
        at 
org.apache.drill.contrib.function.FunctionExample.setup(FunctionExample.java:19)
        at 
org.apache.drill.exec.expr.fn.interpreter.InterpreterEvaluator.evaluateFunction(InterpreterEvaluator.java:139)
        at 
org.apache.drill.exec.expr.fn.interpreter.InterpreterEvaluator$EvalVisitor.visitFunctionHolderExpression(InterpreterEvaluator.java:355)
        at 
org.apache.drill.exec.expr.fn.interpreter.InterpreterEvaluator$EvalVisitor.visitFunctionHolderExpression(InterpreterEvaluator.java:204)
        at 
org.apache.drill.common.expression.FunctionHolderExpression.accept(FunctionHolderExpression.java:53)
        at 
org.apache.drill.exec.expr.fn.interpreter.InterpreterEvaluator.evaluateConstantExpr(InterpreterEvaluator.java:70)
        at 
org.apache.drill.exec.planner.logical.DrillConstExecutor.reduce(DrillConstExecutor.java:152)
        at 
org.apache.calcite.rel.rules.ReduceExpressionsRule.reduceExpressionsInternal(ReduceExpressionsRule.java:620)
        at 
org.apache.calcite.rel.rules.ReduceExpressionsRule.reduceExpressions(ReduceExpressionsRule.java:541)
        at 
org.apache.calcite.rel.rules.ReduceExpressionsRule$ProjectReduceExpressionsRule.onMatch(ReduceExpressionsRule.java:288)
        at 
org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:212)
        at 
org.apache.calcite.plan.volcano.VolcanoPlanner.findBestExp(VolcanoPlanner.java:643)
        at 
org.apache.calcite.tools.Programs$RuleSetProgram.run(Programs.java:339)
        at 
org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.transform(DefaultSqlHandler.java:430)
        at 
org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.transform(DefaultSqlHandler.java:370)
        at 
org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.convertToRawDrel(DefaultSqlHandler.java:250)
        at 
org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.convertToDrel(DefaultSqlHandler.java:319)
        at 
org.apache.drill.exec.planner.sql.handlers.DefaultSqlHandler.getPlan(DefaultSqlHandler.java:177)
        at 
org.apache.drill.exec.planner.sql.DrillSqlWorker.getQueryPlan(DrillSqlWorker.java:226)
        at 
org.apache.drill.exec.planner.sql.DrillSqlWorker.convertPlan(DrillSqlWorker.java:124)
        at 
org.apache.drill.exec.planner.sql.DrillSqlWorker.getPlan(DrillSqlWorker.java:90)
        at org.apache.drill.exec.work.foreman.Foreman.runSQL(Foreman.java:593)
        at org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:276)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
{noformat}
4. Check that query is still in progress state, cancel query.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to