[ https://issues.apache.org/jira/browse/DRILL-7297?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bohdan Kazydub updated DRILL-7297: ---------------------------------- Labels: ready-to-commit (was: ) > 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 > Assignee: Volodymyr Vysotskyi > Priority: Major > Labels: ready-to-commit > Fix For: 1.17.0 > > > 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)