diff --git a/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/ProcBuilder.scala b/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/ProcBuilder.scala index ed64fa2ce..41d7f8726 100644 --- a/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/ProcBuilder.scala +++ b/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/ProcBuilder.scala @@ -110,24 +110,27 @@ trait ProcBuilder { val redirect: Runnable = { () => try { val maxErrorSize = conf.get(KyuubiConf.ENGINE_ERROR_MAX_SIZE) - var line: String = reader.readLine while (true) { - if (containsIgnoreCase(line, "Exception:") && + if (reader.ready()) { + var line: String = reader.readLine + if (containsIgnoreCase(line, "Exception:") && !line.contains("at ") && !line.startsWith("Caused by:")) { - val sb = new StringBuilder(line) - error = KyuubiSQLException(sb.toString() + s"\n See more: $engineLog") - line = reader.readLine() - while (sb.length < maxErrorSize && line != null && - (line.startsWith("\tat ") || line.startsWith("Caused by: "))) { - sb.append("\n" + line) + val sb = new StringBuilder(line) + error = KyuubiSQLException(sb.toString() + s"\n See more: $engineLog") line = reader.readLine() - } + while (sb.length < maxErrorSize && line != null && + (line.startsWith("\tat ") || line.startsWith("Caused by: "))) { + sb.append("\n" + line) + line = reader.readLine() + } - error = KyuubiSQLException(sb.toString() + s"\n See more: $engineLog") - } else if (line != null) { - lastRowOfLog = line + error = KyuubiSQLException(sb.toString() + s"\n See more: $engineLog") + } else if (line != null) { + lastRowOfLog = line + } + } else { + Thread.sleep(300) } - line = reader.readLine() } } catch { case _: IOException =>