You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@toree.apache.org by jo...@apache.org on 2017/04/10 21:07:54 UTC
incubator-toree git commit: TOREE-403 : delete temporary directories
after kernel shutdown
Repository: incubator-toree
Updated Branches:
refs/heads/master 14c80857a -> 6997e4d4e
TOREE-403 : delete temporary directories after kernel shutdown
Closes #119
Project: http://git-wip-us.apache.org/repos/asf/incubator-toree/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-toree/commit/6997e4d4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-toree/tree/6997e4d4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-toree/diff/6997e4d4
Branch: refs/heads/master
Commit: 6997e4d4e622e0af39e60f69417a4fe512b1b10c
Parents: 14c8085
Author: kun liu <ku...@kuns-MacBook-Pro.local>
Authored: Fri Apr 7 13:52:00 2017 -0700
Committer: Jakob Odersky <ja...@odersky.com>
Committed: Mon Apr 10 13:55:26 2017 -0700
----------------------------------------------------------------------
.../dependencies/DependencyDownloader.scala | 3 +-
.../org/apache/toree/utils/FileUtils.scala | 61 ++++++++++++++++++++
.../boot/layer/ComponentInitialization.scala | 4 +-
.../org/apache/toree/magic/builtin/AddJar.scala | 5 +-
4 files changed, 68 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-toree/blob/6997e4d4/kernel-api/src/main/scala/org/apache/toree/dependencies/DependencyDownloader.scala
----------------------------------------------------------------------
diff --git a/kernel-api/src/main/scala/org/apache/toree/dependencies/DependencyDownloader.scala b/kernel-api/src/main/scala/org/apache/toree/dependencies/DependencyDownloader.scala
index 1859776..e2ffe61 100644
--- a/kernel-api/src/main/scala/org/apache/toree/dependencies/DependencyDownloader.scala
+++ b/kernel-api/src/main/scala/org/apache/toree/dependencies/DependencyDownloader.scala
@@ -21,6 +21,7 @@ import java.io.{File, PrintStream}
import java.net.{URI, URL}
import java.nio.file.Files
import scala.util.Try
+import org.apache.toree.utils.FileUtils
abstract class DependencyDownloader {
/**
@@ -134,5 +135,5 @@ object DependencyDownloader {
/** Default download directory for dependencies. */
val DefaultDownloadDirectory =
- Files.createTempDirectory("toree-dependency-downloads-").toFile
+ FileUtils.createManagedTempDirectory("toree-dependency-downloads")
}
http://git-wip-us.apache.org/repos/asf/incubator-toree/blob/6997e4d4/kernel-api/src/main/scala/org/apache/toree/utils/FileUtils.scala
----------------------------------------------------------------------
diff --git a/kernel-api/src/main/scala/org/apache/toree/utils/FileUtils.scala b/kernel-api/src/main/scala/org/apache/toree/utils/FileUtils.scala
new file mode 100644
index 0000000..ebfdff3
--- /dev/null
+++ b/kernel-api/src/main/scala/org/apache/toree/utils/FileUtils.scala
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package org.apache.toree.utils
+
+import java.io.File
+import java.nio.file.Files
+
+
+object FileUtils {
+
+ val parentTempDir: String = "toree-tmp-dir"
+
+ private def deleteDirRecur(file: File): Unit = {
+ // delete directory recursively
+ if(file.isDirectory){
+ file.listFiles.foreach(deleteDirRecur)
+ }
+ if(file.exists){
+ file.delete
+ }
+ }
+
+ private def createParentTemp() = {
+ val dir = Files.createTempDirectory(parentTempDir).toFile
+ sys.addShutdownHook{
+ // addShutdownHook will ensure when JVM exits, the temporary directory
+ // assoicated with a given kernel would be deleted
+ deleteDirRecur(dir)
+ }
+ dir
+ }
+
+ private lazy val parent: File = createParentTemp()
+
+ /**
+ * Create a directory with name specified under the "toree-tmp-dir"
+ * that created by Files.createTempDirectory
+ *
+ * @param name The name of the directory to be created
+ */
+ def createManagedTempDirectory(name: String): File = {
+ val dir = new File(parent, name)
+ dir.mkdir()
+ dir
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-toree/blob/6997e4d4/kernel/src/main/scala/org/apache/toree/boot/layer/ComponentInitialization.scala
----------------------------------------------------------------------
diff --git a/kernel/src/main/scala/org/apache/toree/boot/layer/ComponentInitialization.scala b/kernel/src/main/scala/org/apache/toree/boot/layer/ComponentInitialization.scala
index 07848ec..63a358d 100644
--- a/kernel/src/main/scala/org/apache/toree/boot/layer/ComponentInitialization.scala
+++ b/kernel/src/main/scala/org/apache/toree/boot/layer/ComponentInitialization.scala
@@ -32,7 +32,7 @@ import org.apache.toree.kernel.protocol.v5.KMBuilder
import org.apache.toree.kernel.protocol.v5.kernel.ActorLoader
import org.apache.toree.magic.MagicManager
import org.apache.toree.plugins.PluginManager
-import org.apache.toree.utils.LogLike
+import org.apache.toree.utils.{LogLike, FileUtils}
import scala.collection.JavaConverters._
import org.apache.toree.plugins.AllInterpretersReady
@@ -123,7 +123,7 @@ trait StandardComponentInitialization extends ComponentInitialization {
if(config.hasPath("deps_dir") && Files.exists(Paths.get(config.getString("deps_dir")))) {
config.getString("deps_dir")
} else {
- Files.createTempDirectory("toree_add_deps").toFile.getAbsolutePath
+ FileUtils.createManagedTempDirectory("toree_add_deps").getAbsolutePath
}
}
http://git-wip-us.apache.org/repos/asf/incubator-toree/blob/6997e4d4/kernel/src/main/scala/org/apache/toree/magic/builtin/AddJar.scala
----------------------------------------------------------------------
diff --git a/kernel/src/main/scala/org/apache/toree/magic/builtin/AddJar.scala b/kernel/src/main/scala/org/apache/toree/magic/builtin/AddJar.scala
index a8bf14b..4893077 100644
--- a/kernel/src/main/scala/org/apache/toree/magic/builtin/AddJar.scala
+++ b/kernel/src/main/scala/org/apache/toree/magic/builtin/AddJar.scala
@@ -24,20 +24,21 @@ import java.nio.file.{Files, Paths}
import org.apache.toree.magic._
import org.apache.toree.magic.builtin.AddJar._
import org.apache.toree.magic.dependencies._
-import org.apache.toree.utils.{ArgumentParsingSupport, DownloadSupport, LogLike}
+import org.apache.toree.utils.{ArgumentParsingSupport, DownloadSupport, LogLike, FileUtils}
import com.typesafe.config.Config
import org.apache.toree.plugins.annotations.Event
object AddJar {
private var jarDir:Option[String] = None
+
def getJarDir(config: Config): String = {
jarDir.getOrElse({
jarDir = Some(
if(config.hasPath("jar_dir") && Files.exists(Paths.get(config.getString("jar_dir")))) {
config.getString("jar_dir")
} else {
- Files.createTempDirectory("toree_add_jars").toFile.getAbsolutePath
+ FileUtils.createManagedTempDirectory("toree_add_jars").getAbsolutePath
}
)
jarDir.get