Akka Persistence Cassandra with Akka 2.3.0 throwing fatal EOFException when used with Play 2.2.1
akka, akka-persistence, playframework-2.0
Solution
Play 2.2.x uses Akka 2.2.x. You'll need to wait for Play 2.3 which will be compatible with Akka 2.3.
Problem
Any idea why I am getting the following error after adding Akka to my library dependencies and executing the `test` task? ``` Uncaught error from thread [reactivemongo-akka.actor.default-dispatcher-4] shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled for ActorSystem[reactivemongo] akka.actor.ActorCell.create(ActorCell.scala:580) at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:456) at akka.actor.ActorCell.systemInvoke(ActorCell.scala:478) at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:263) at akka.dispatch.Mailbox.run(Mailbox.scala:219) at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393) 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) Exception in thread "Thread-4" java.io.EOFException at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2596) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1316) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) at sbt.React.react(ForkTests.scala:116) at sbt.ForkTests$$anonfun$mainTestTask$1$Acceptor$2$.run(ForkTests.scala:75) at java.lang.Thread.run(Thread.java:724) ``` And when I execute the `run` task: ``` Uncaught error from thread [reactivemongo-akka.actor.default-dispatcher-2] shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled for ActorSystem[reactivemongo] java.lang.AbstractMethodError at akka.actor.ActorCell.create(ActorCell.scala:580) at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:456) at akka.actor.ActorCell.systemInvoke(ActorCell.scala:478) at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:263) at akka.dispatch.Mailbox.run(Mailbox.scala:219) at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393) 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) [ERROR] [03/25/2014 15:28:17.309] [reactivemongo-akka.actor.default-dispatcher-2] [ActorSystem(reactivemongo)] Uncaught error from thread [reactivemongo-akka.actor.default-dispatcher-2] shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled java.lang.AbstractMethodError at akka.actor.ActorCell.create(ActorCell.scala:580) at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:456) at akka.actor.ActorCell.systemInvoke(ActorCell.scala:478) at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:263) at akka.dispatch.Mailbox.run(Mailbox.scala:219) at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393) 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 relevant `build.sbt` settings ``` scalaVersion := "2.10.3" // Dependencies resolvers ++= Seq( "Sonatype Releases" at "http://oss.sonatype.org/content/repositories/releases", "Krasser's Bintray" at "http://dl.bintray.com/krasserm/maven" ) libraryDependencies ++= Seq( // akka "com.typesafe.akka" %% "akka-actor" % "2.3.0", "com.typesafe.akka" %% "akka-persistence-experimental" % "2.3.0", "com.github.krasserm" % "akka-persistence-cassandra_2.10" % "0.2", // dependency injection "com.google.inject" % "guice" % "3.0", "net.codingwell" % "scala-guice_2.10" % "4.0.0-beta", "javax.inject" % "javax.inject" % "1", // mongo "org.reactivemongo" %% "reactivemongo" % "0.10.0", "org.reactivemongo" %% "play2-reactivemongo" % "0.10.2", // slick "com.h2database" % "h2" % "1.3.166", "com.typesafe" % "config" % "1.0.0", "com.typesafe.slick" %% "slick" % "1.0.1", // testing "org.mockito" % "mockito-core" % "1.9.5" % "test", "org.specs2" %% "specs2" % "2.3.8" % "test", "org.scalacheck" %% "scalacheck" % "1.11.3" % "test" ) // App settings play.Project.playScalaSettings ``` And my `project/plugin.sbt` ``` resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/" addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.2.1") ``` This started after I added the akka-persistence plugin with the following libs: ``` "com.typesafe.akka" %% "akka-actor" % "2.3.0", "com.typesafe.akka" %% "akka-persistence-experimental" % "2.3.0", "com.github.krasserm" % "akka-persistence-cassandra_2.10" % "0.2" ``` I installed Cassandra and I am running it locally while doing this. Even if I comment any one of these lines out and run `sbt clean`, `sbt update`, and `sbt test` I still see this error. Only when I comment them all out am I able to run and test my app. My only guess is that the version of Akka in the persistence library and Play2 are incompatible. Does that sound right?