pan3793 commented on a change in pull request #1119:
URL: https://github.com/apache/incubator-kyuubi/pull/1119#discussion_r711529056
##########
File path:
kyuubi-server/src/main/scala/org/apache/kyuubi/engine/ProcBuilder.scala
##########
@@ -148,6 +149,38 @@ trait ProcBuilder {
proc
}
+ def execKillYarnJob(appId: String): Int = {
+ val hadoopHomeOpt = env.get("HADOOP_HOME").orElse {
+ throw KyuubiSQLException(s"Failed to kill yarn job. HADOOP_HOME is not
set! " +
+ "For more detail information on installing and configuring Yarn,
please visit " +
+ "https://kyuubi.apache.org/docs/stable/deployment/on_yarn.html")
+ }.map { hadoopHome =>
+ Paths.get(hadoopHome, "bin",
"yarn").toAbsolutePath.toFile.getCanonicalPath
+ }.get
+ val command = hadoopHomeOpt + " application -kill " + appId
+ val pb = new ProcessBuilder("/bin/sh", "-c", command)
+ var exitValue: Option[Int] = None
+
+ try {
+ val process = pb.start()
+ exitValue = Some(process.exitValue())
+ } catch {
+ case e: Exception =>
+ throw KyuubiSQLException(s"Failed to kill yarn job. command :
$command", e.getCause)
+ }
+ exitValue.get
+ }
+
+ val YARN_APP_NAME_REGEX: Regex = "application_\\d+_\\d+".r
+
+ def killApplication(row: String = lastRowOfLog): Unit = {
+ val matcher = YARN_APP_NAME_REGEX.findAllMatchIn(row)
+
+ if (matcher.nonEmpty && row.contains("state: ACCEPTED")) {
+ execKillYarnJob(matcher.next().group(0))
+ }
+ }
Review comment:
change to
```
def closeYarnJob(line: String = lastRowOfLog): Unit = {
YARN_APP_NAME_REGEX.findFirstIn(line) match {
case Some(appName) if line.contains("state: ACCEPTED") =>
execKillYarnJob(appName)
case None =>
}
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]