in thriftserver/server/src/main/scala/org/apache/livy/thriftserver/cli/ThriftCLIService.scala [531:569]
override def GetOperationStatus(req: TGetOperationStatusReq): TGetOperationStatusResp = {
val resp = new TGetOperationStatusResp
val operationHandle = new OperationHandle(req.getOperationHandle)
try {
val operationStatus = cliService.getOperationStatus(operationHandle, req.isGetProgressUpdate)
resp.setOperationState(operationStatus.state.toTOperationState)
resp.setErrorMessage(operationStatus.state.getErrorMessage)
val opException = operationStatus.operationException
resp.setOperationStarted(operationStatus.operationStarted)
resp.setOperationCompleted(operationStatus.operationCompleted)
resp.setHasResultSet(operationStatus.hasResultSet)
val executionStatus = TJobExecutionStatus.NOT_AVAILABLE
resp.setProgressUpdateResponse(new TProgressUpdateResp(
Collections.emptyList[String],
Collections.emptyList[util.List[String]],
0.0D,
executionStatus,
"",
0L))
if (opException != null) {
resp.setSqlState(opException.getSQLState)
resp.setErrorCode(opException.getErrorCode)
if (opException.getErrorCode == 29999) {
resp.setErrorMessage(StringUtils.stringifyException(opException))
} else {
resp.setErrorMessage(opException.getMessage)
}
} else if (OperationType.EXECUTE_STATEMENT == operationHandle.getOperationType) {
resp.getProgressUpdateResponse.setProgressedPercentage(
getProgressedPercentage(operationHandle))
}
resp.setStatus(ThriftCLIService.OK_STATUS)
} catch {
case e: Exception =>
warn("Error getting operation status: ", e)
resp.setStatus(HiveSQLException.toTStatus(e))
}
resp
}