private static QueryError toQueryError(QueryInfo queryInfo)
{
FailureInfo failure = queryInfo.getFailureInfo();
if (failure == null) {
QueryState state = queryInfo.getState();
if ((!state.isDone()) || (state == QueryState.FINISHED)) {
return null;
}
log.warn("Query %s in state %s has no failure info", queryInfo.getQueryId(), state);
failure = toFailure(new RuntimeException(format("Query is %s (reason unknown)", state))).toFailureInfo();
}
ErrorCode errorCode;
if (queryInfo.getErrorCode() != null) {
errorCode = queryInfo.getErrorCode();
}
else {
errorCode = INTERNAL_ERROR.toErrorCode();
log.warn("Failed query %s has no error code", queryInfo.getQueryId());
}
return new QueryError(
failure.getMessage(),
null,
errorCode.getCode(),
errorCode.getName(),
toErrorType(errorCode.getCode()).toString(),
failure.getErrorLocation(),
failure);
}