harbby / presto-connectors

facebook presto connectors
Apache License 2.0
49 stars 22 forks source link

elasticseracher connector explain sql或者执行sql失败 导致ElasticsearchMetadata.rollbackAction锁释放失败 #1

Closed zhonghui001 closed 5 years ago

zhonghui001 commented 6 years ago

`presto:default> explain insert into e11 values ('wu','di'); Query Plan

(1 row)

Query 20180710_095646_00005_mjub7, FINISHED, 1 node Splits: 1 total, 1 done (100.00%) 0:03 [0 rows, 0B] [0 rows/s, 0B/s]

presto:default> explain insert into e11 values ('wu','di'); Query is gone (server restarted?) presto:default> `

上述就是重现错误的操作

异常堆栈 如下:

java.lang.IllegalStateException: Cannot begin a new write while in an existing one at com.google.common.base.Preconditions.checkState(Preconditions.java:504) at com.facebook.presto.elasticsearch.ElasticsearchMetadata.checkNoRollback(ElasticsearchMetadata.java:267) at com.facebook.presto.elasticsearch.ElasticsearchMetadata.beginInsert(ElasticsearchMetadata.java:178) at com.facebook.presto.metadata.MetadataManager.beginInsert(MetadataManager.java:680) at com.facebook.presto.sql.planner.optimizations.BeginTableWrite$Rewriter.createWriterTarget(BeginTableWrite.java:156) at com.facebook.presto.sql.planner.optimizations.BeginTableWrite$Rewriter.visitTableFinish(BeginTableWrite.java:121) at com.facebook.presto.sql.planner.optimizations.BeginTableWrite$Rewriter.visitTableFinish(BeginTableWrite.java:76) at com.facebook.presto.sql.planner.plan.TableFinishNode.accept(TableFinishNode.java:81) at com.facebook.presto.sql.planner.plan.SimplePlanRewriter$RewriteContext.rewrite(SimplePlanRewriter.java:84) at com.facebook.presto.sql.planner.plan.SimplePlanRewriter$RewriteContext.lambda$defaultRewrite$0(SimplePlanRewriter.java:73) at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) at java.util.Collections$2.tryAdvance(Collections.java:4717) at java.util.Collections$2.forEachRemaining(Collections.java:4725) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) at com.facebook.presto.sql.planner.plan.SimplePlanRewriter$RewriteContext.defaultRewrite(SimplePlanRewriter.java:74) at com.facebook.presto.sql.planner.plan.SimplePlanRewriter.visitPlan(SimplePlanRewriter.java:38) at com.facebook.presto.sql.planner.plan.SimplePlanRewriter.visitPlan(SimplePlanRewriter.java:22) at com.facebook.presto.sql.planner.plan.PlanVisitor.visitOutput(PlanVisitor.java:49) at com.facebook.presto.sql.planner.plan.OutputNode.accept(OutputNode.java:82) at com.facebook.presto.sql.planner.plan.SimplePlanRewriter.rewriteWith(SimplePlanRewriter.java:32) at com.facebook.presto.sql.planner.optimizations.BeginTableWrite.optimize(BeginTableWrite.java:73) at com.facebook.presto.sql.planner.LogicalPlanner.plan(LogicalPlanner.java:140) at com.facebook.presto.sql.planner.LogicalPlanner.plan(LogicalPlanner.java:129) at com.facebook.presto.sql.analyzer.QueryExplainer.getLogicalPlan(QueryExplainer.java:154) at com.facebook.presto.sql.analyzer.QueryExplainer.getPlan(QueryExplainer.java:112) at com.facebook.presto.sql.rewrite.ExplainRewrite$Visitor.getQueryPlan(ExplainRewrite.java:126) at com.facebook.presto.sql.rewrite.ExplainRewrite$Visitor.visitExplain(ExplainRewrite.java:104) at com.facebook.presto.sql.rewrite.ExplainRewrite$Visitor.visitExplain(ExplainRewrite.java:60) at com.facebook.presto.sql.tree.Explain.accept(Explain.java:80) at com.facebook.presto.sql.tree.AstVisitor.process(AstVisitor.java:27) at com.facebook.presto.sql.rewrite.ExplainRewrite.rewrite(ExplainRewrite.java:57) at com.facebook.presto.sql.rewrite.StatementRewrite.rewrite(StatementRewrite.java:51) at com.facebook.presto.sql.analyzer.Analyzer.analyze(Analyzer.java:70) at com.facebook.presto.sql.analyzer.Analyzer.analyze(Analyzer.java:65) at com.facebook.presto.execution.SqlQueryExecution.<init>(SqlQueryExecution.java:171) at com.facebook.presto.execution.SqlQueryExecution$SqlQueryExecutionFactory.createQueryExecution(SqlQueryExecution.java:680) at com.facebook.presto.execution.SqlQueryManager.createQueryInternal(SqlQueryManager.java:441) at com.facebook.presto.execution.SqlQueryManager.lambda$createQuery$3(SqlQueryManager.java:372) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) at java.util.concurrent.FutureTask.run(FutureTask.java) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

harbby commented 6 years ago

@zhonghui001 非常感谢您的反馈 我已确认该问题

harbby commented 6 years ago

已经通过commit abf81aa a修复该bug