Skip to content

Commit 56df867

Browse files
committed
gh-186 Make sure Scala interpreter is closed after using it
1 parent 87b2ac6 commit 56df867

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

src/main/scala/org/vertx/scala/platform/impl/ScalaVerticleFactory.scala

+18-14
Original file line numberDiff line numberDiff line change
@@ -94,21 +94,25 @@ class ScalaVerticleFactory extends VerticleFactory {
9494
val interpreter = new ScalaInterpreter(
9595
settings.get, vertx, container, new LogPrintWriter(logger))
9696

97-
runAsScript(main, interpreter).recoverWith { case _ =>
98-
// Recover by trying to compile it as a Scala class
99-
logger.info(s"Script contains compilation errors, or $main is a Scala class (pass -Dvertx.scala.interpreter.verbose=true to find out more)")
100-
logger.info(s"Compiling as a Scala class")
101-
102-
val className = extractClassName(main)
103-
val classFile = getClassFile(main)
104-
105-
for {
106-
classLoader <- interpreter.compileClass(classFile)
107-
verticle <- newVerticleInstance(className, classLoader)
108-
} yield {
109-
logger.info(s"Starting $className")
110-
verticle
97+
try {
98+
runAsScript(main, interpreter).recoverWith { case _ =>
99+
// Recover by trying to compile it as a Scala class
100+
logger.info(s"Script contains compilation errors, or $main is a Scala class (pass -Dvertx.scala.interpreter.verbose=true to find out more)")
101+
logger.info(s"Compiling as a Scala class")
102+
103+
val className = extractClassName(main)
104+
val classFile = getClassFile(main)
105+
106+
for {
107+
classLoader <- interpreter.compileClass(classFile)
108+
verticle <- newVerticleInstance(className, classLoader)
109+
} yield {
110+
logger.info(s"Starting $className")
111+
verticle
112+
}
111113
}
114+
} finally {
115+
interpreter.close()
112116
}
113117
}
114118

0 commit comments

Comments
 (0)