Hi!
Now I update my application to Play 2.4 and Slick 3.0. I have amount of tests that splitted into several Spec files. For now the tests start and work correctly only for first Spec. For second and furter ech test produce an error like next:
Task slick.backend.DatabaseComponent$DatabaseDef$$anon$2@24811ba9 rejected from java.util.concurrent.ThreadPoolExecutor@da0ebb1[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 5046].
Full error stack:
Task slick.backend.DatabaseComponent$DatabaseDef$$anon$2@24811ba9 rejected from java.util.concurrent.ThreadPoolExecutor@da0ebb1[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 5046]
java.util.concurrent.RejectedExecutionException: Task slick.backend.DatabaseComponent$DatabaseDef$$anon$2@24811ba9 rejected from java.util.concurrent.ThreadPoolExecutor@da0ebb1[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 5046]
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2047)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:823)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1369)
at scala.concurrent.impl.ExecutionContextImpl$$anon$1.execute(ExecutionContextImpl.scala:136)
at slick.backend.DatabaseComponent$DatabaseDef$class.runSynchronousDatabaseAction(DatabaseComponent.scala:230)
at slick.jdbc.JdbcBackend$DatabaseDef.runSynchronousDatabaseAction(JdbcBackend.scala:38)
at slick.backend.DatabaseComponent$DatabaseDef$class.runInContext(DatabaseComponent.scala:207)
at slick.jdbc.JdbcBackend$DatabaseDef.runInContext(JdbcBackend.scala:38)
at slick.backend.DatabaseComponent$DatabaseDef$class.runInternal(DatabaseComponent.scala:75)
at slick.jdbc.JdbcBackend$DatabaseDef.runInternal(JdbcBackend.scala:38)
at slick.backend.DatabaseComponent$DatabaseDef$class.run(DatabaseComponent.scala:72)
at slick.jdbc.JdbcBackend$DatabaseDef.run(JdbcBackend.scala:38)
at dao.UserDao$.queryByLogin(UserDao.scala:33)
at controllers.UserController$$anonfun$loginPost$1$$anonfun$apply$4.apply(UserController.scala:85)
at controllers.UserController$$anonfun$loginPost$1$$anonfun$apply$4.apply(UserController.scala:83)
at play.api.data.Form.fold(Form.scala:139)
at controllers.UserController$$anonfun$loginPost$1.apply(UserController.scala:80)
at controllers.UserController$$anonfun$loginPost$1.apply(UserController.scala:79)
at play.api.mvc.Action$.invokeBlock(Action.scala:533)
at play.api.mvc.Action$.invokeBlock(Action.scala:530)
at play.api.mvc.ActionBuilder$$anon$1.apply(Action.scala:493)
at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:105)
at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:105)
at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:104)
at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:103)
at scala.Option.map(Option.scala:146)
at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:103)
at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:96)
at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:524)
at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:524)
at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:560)
at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:560)
at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$14.apply(Iteratee.scala:537)
at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$14.apply(Iteratee.scala:537)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
My library dependencies from build.sbt:
libraryDependencies ++= Seq(
cache,
ws,
"com.typesafe.play" % "play_2.11" % "2.4.6",
"com.typesafe.play" %% "anorm" % "2.4.0",
"com.typesafe.slick" %% "slick" % "3.1.1",
"com.typesafe.play" %% "play-slick" % "1.1.1",
"com.typesafe.play" %% "play-slick-evolutions" % "1.1.1",
"org.slf4j" % "slf4j-nop" % "1.6.4",
"org.mindrot" % "jbcrypt" % "0.3m",
"joda-time" % "joda-time" % "2.7",
"org.joda" % "joda-convert" % "1.7",
"com.github.tototoshi" %% "slick-joda-mapper" % "2.1.0",
"com.typesafe.play" %% "play-mailer" % "4.0.0-M1",
"io.strongtyped" %% "active-slick" % "0.3.3",
"postgresql" % "postgresql" % "9.1-901.jdbc4",
"org.apache.pdfbox" % "pdfbox" % "1.8.9",
"com.opencsv" % "opencsv" % "3.5",
"be.objectify" %% "deadbolt-scala" % "2.4.2",
"ch.qos.logback" % "logback-classic" % "1.1.2",
"org.scalatest" %% "scalatest" % "2.2.5" % "test",
"org.scalatestplus" %% "play" % "1.4.0-M3" % "test",
"org.scalacheck" %% "scalacheck" % "1.12.4" % "test",
"org.specs2" %% "specs2-core" % "3.0" % "test",
"com.h2database" % "h2" % "1.4.185"
)
Also header of PlaySpec:
package fixture
import java.io.ByteArrayInputStream
import models._
import play.api.Play
import play.api.db.slick.{DatabaseConfigProvider, HasDatabaseConfig}
import slick.driver.JdbcProfile
import slick.driver.PostgresDriver.api._
import akka.util.Timeout
import org.apache.pdfbox.cos.COSDocument
import org.apache.pdfbox.pdfparser.PDFParser
import org.apache.pdfbox.pdmodel.PDDocument
import org.apache.pdfbox.util.PDFTextStripper
import org.scalatest._
import org.scalatestplus.play.OneAppPerSuite
import play.api.mvc.Result
import play.api.test.FakeRequest
import play.api.test.Helpers._
import dao._
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Future
trait PlaySpec extends WordSpec
with OneAppPerSuite
with SequentialNestedSuiteExecution
with Matchers
with OptionValues
with HasDatabaseConfig[JdbcProfile]
with ActivityDatabaseModule {
protected lazy val dbConfig = DatabaseConfigProvider.get[JdbcProfile](Play.current)
import driver.api._
........................
Also headers of first Spec (which works correctly):
package controllers
import slick.driver.PostgresDriver.api._
import fixture.PlaySpec
import play.api.db.slick._
import play.api.i18n.Messages
import play.api.i18n.Messages.Implicits._
import play.api.test.FakeRequest
import play.api.test.Helpers._
import scala.language.implicitConversions
import scala.concurrent.ExecutionContext.Implicits.global
class SchoolAdminContactSpec extends PlaySpec {
"School Admin Contact Controller" should {
"respond to login and GET activities list for contact by SchoolAdmin" in
........
and header of second Spec (which fails with mentioned error):
package controllers
import fixture.PlaySpec
import play.api.Play
import play.api.db.slick.DatabaseConfigProvider
import play.api.test.FakeRequest
import play.api.test.Helpers._
import slick.driver.JdbcProfile
import scala.language.implicitConversions
class SchoolAdminControllerSpec extends PlaySpec {
override lazy val dbConfig = DatabaseConfigProvider.get[JdbcProfile](Play.current)
"School Admin Controller" should {
"respond to admin action for logged admin of main center" in {
.......
Thanks for any advise!