From f387fcd7ee2e79fadddfc2c3c12bd416531fd76e Mon Sep 17 00:00:00 2001 From: Kent Yao Date: Mon, 19 Mar 2018 10:46:47 +0800 Subject: [PATCH] org.apache.hive.service.cli.HiveSQLException: Illegal Operation state transition FINISHED -> CLOSED at yaooqinn.kyuubi.operation.OperationState.ex(OperationState.scala:30) at yaooqinn.kyuubi.operation.FINISHED$.ex(OperationState.scala:50) at yaooqinn.kyuubi.operation.OperationState.validateTransition(OperationState.scala:28) at yaooqinn.kyuubi.operation.FINISHED$.validateTransition(OperationState.scala:50) at yaooqinn.kyuubi.operation.KyuubiOperation.setState(KyuubiOperation.scala:101) at yaooqinn.kyuubi.operation.KyuubiOperation.cleanup(KyuubiOperation.scala:439) at yaooqinn.kyuubi.operation.KyuubiOperation.close(KyuubiOperation.scala:215) at yaooqinn.kyuubi.operation.OperationManager.closeOperation(OperationManager.scala:137) at yaooqinn.kyuubi.session.KyuubiSession.closeOperation(KyuubiSession.scala:389) at yaooqinn.kyuubi.server.BackendService.closeOperation(BackendService.scala:149) at yaooqinn.kyuubi.server.FrontendService.CloseOperation(FrontendService.scala:474) at org.apache.hive.service.cli.thrift.TCLIService.getResult(TCLIService.java:1513) at org.apache.hive.service.cli.thrift.TCLIService.getResult(TCLIService.java:1498) at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39) at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39) at org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge.process(HadoopThriftAuthBridge.java:692) at org.apache.thrift.server.TThreadPoolServer.run(TThreadPoolServer.java:286) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) --- .../yaooqinn/kyuubi/operation/OperationState.scala | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/scala/yaooqinn/kyuubi/operation/OperationState.scala b/src/main/scala/yaooqinn/kyuubi/operation/OperationState.scala index bbacfe4ff..7cf594682 100644 --- a/src/main/scala/yaooqinn/kyuubi/operation/OperationState.scala +++ b/src/main/scala/yaooqinn/kyuubi/operation/OperationState.scala @@ -27,7 +27,8 @@ trait OperationState { @throws[HiveSQLException] def validateTransition(newState: OperationState): Unit = ex(newState) - def ex(state: OperationState): Unit = throw new HiveSQLException( + @throws[HiveSQLException] + protected def ex(state: OperationState): Unit = throw new HiveSQLException( "Illegal Operation state transition " + this + " -> " + state, "KyuubiException", 1000) } @@ -50,11 +51,19 @@ case object RUNNING extends OperationState { case object FINISHED extends OperationState { override def toTOperationState(): TOperationState = TOperationState.FINISHED_STATE override def isTerminal(): Boolean = true + override def validateTransition(newState: OperationState): Unit = newState match { + case CLOSED => + case _ => ex(newState) + } } case object CANCELED extends OperationState { override def toTOperationState(): TOperationState = TOperationState.CANCELED_STATE override def isTerminal(): Boolean = true + override def validateTransition(newState: OperationState): Unit = newState match { + case CLOSED => + case _ => ex(newState) + } } case object CLOSED extends OperationState {