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 55990e05c..87c5a4bf9 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 @@ -20,7 +20,7 @@ package org.apache.kyuubi.engine import java.io.{File, IOException} import java.lang.ProcessBuilder.Redirect import java.nio.charset.StandardCharsets -import java.nio.file.{Files, Path} +import java.nio.file.{Files, Path, Paths} import scala.collection.JavaConverters._ import scala.util.matching.Regex @@ -28,7 +28,7 @@ import scala.util.matching.Regex import com.google.common.collect.EvictingQueue import org.apache.commons.lang3.StringUtils.containsIgnoreCase -import org.apache.kyuubi.{KyuubiSQLException, Logging} +import org.apache.kyuubi.{KyuubiSQLException, Logging, Utils} import org.apache.kyuubi.config.KyuubiConf import org.apache.kyuubi.operation.log.OperationLog import org.apache.kyuubi.util.NamedThreadFactory @@ -57,7 +57,31 @@ trait ProcBuilder { protected val extraEngineLog: Option[OperationLog] - protected val workingDir: Path + protected val workingDir: Path = { + env.get("KYUUBI_WORK_DIR_ROOT").map { root => + val workingRoot = Paths.get(root).toAbsolutePath + if (!Files.exists(workingRoot)) { + debug(s"Creating KYUUBI_WORK_DIR_ROOT at $workingRoot") + Files.createDirectories(workingRoot) + } + if (Files.isDirectory(workingRoot)) { + workingRoot.toString + } else null + }.map { rootAbs => + val working = Paths.get(rootAbs, proxyUser) + if (!Files.exists(working)) { + debug(s"Creating $proxyUser's working directory at $working") + Files.createDirectories(working) + } + if (Files.isDirectory(working)) { + working + } else { + Utils.createTempDir(rootAbs, proxyUser) + } + }.getOrElse { + Utils.createTempDir(namePrefix = proxyUser) + } + } final lazy val processBuilder: ProcessBuilder = { val pb = new ProcessBuilder(commands: _*) diff --git a/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/flink/FlinkProcessBuilder.scala b/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/flink/FlinkProcessBuilder.scala index 8a02caf76..7fec4e66e 100644 --- a/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/flink/FlinkProcessBuilder.scala +++ b/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/flink/FlinkProcessBuilder.scala @@ -19,7 +19,7 @@ package org.apache.kyuubi.engine.flink import java.io.{File, FilenameFilter} import java.net.URI -import java.nio.file.{Files, Path, Paths} +import java.nio.file.{Files, Paths} import com.google.common.annotations.VisibleForTesting @@ -99,32 +99,6 @@ class FlinkProcessBuilder( override protected def commands: Array[String] = Array(executable) - override protected val workingDir: Path = { - env.get("KYUUBI_WORK_DIR_ROOT").map { root => - val workingRoot = Paths.get(root).toAbsolutePath - if (!Files.exists(workingRoot)) { - debug(s"Creating KYUUBI_WORK_DIR_ROOT at $workingRoot") - Files.createDirectories(workingRoot) - } - if (Files.isDirectory(workingRoot)) { - workingRoot.toString - } else null - }.map { rootAbs => - val working = Paths.get(rootAbs, proxyUser) - if (!Files.exists(working)) { - debug(s"Creating $proxyUser's working directory at $working") - Files.createDirectories(working) - } - if (Files.isDirectory(working)) { - working - } else { - Utils.createTempDir(rootAbs, proxyUser) - } - }.getOrElse { - Utils.createTempDir(namePrefix = proxyUser) - } - } - override def toString: String = commands.map { case arg if arg.startsWith("--") => s"\\\n\t$arg" case arg => arg diff --git a/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/spark/SparkProcessBuilder.scala b/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/spark/SparkProcessBuilder.scala index e3c491b64..cefeb47b4 100644 --- a/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/spark/SparkProcessBuilder.scala +++ b/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/spark/SparkProcessBuilder.scala @@ -19,7 +19,7 @@ package org.apache.kyuubi.engine.spark import java.io.{File, FilenameFilter, IOException} import java.net.URI -import java.nio.file.{Files, Path, Paths} +import java.nio.file.{Files, Paths} import scala.collection.mutable.ArrayBuffer @@ -98,32 +98,6 @@ class SparkProcessBuilder( } } - override protected val workingDir: Path = { - env.get("KYUUBI_WORK_DIR_ROOT").map { root => - val workingRoot = Paths.get(root).toAbsolutePath - if (!Files.exists(workingRoot)) { - debug(s"Creating KYUUBI_WORK_DIR_ROOT at $workingRoot") - Files.createDirectories(workingRoot) - } - if (Files.isDirectory(workingRoot)) { - workingRoot.toString - } else null - }.map { rootAbs => - val working = Paths.get(rootAbs, proxyUser) - if (!Files.exists(working)) { - debug(s"Creating $proxyUser's working directory at $working") - Files.createDirectories(working) - } - if (Files.isDirectory(working)) { - working - } else { - Utils.createTempDir(rootAbs, proxyUser) - } - }.getOrElse { - Utils.createTempDir(namePrefix = proxyUser) - } - } - override protected def commands: Array[String] = { val buffer = new ArrayBuffer[String]() buffer += executable