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)
This commit is contained in:
Kent Yao 2018-03-19 10:46:47 +08:00
parent 359a80bd57
commit f387fcd7ee

View File

@ -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 {