scala play app reactive mongo akka actors
sbt run:
i occasionaly error ten times on sbt console:
it happens after recompile , play reload, otherwise happens less often, doesn't cause fail, page gives error.
[error] r.api.cursor - fails send request java.util.concurrent.timeoutexception: futures timed out after [3000 milliseconds] @ scala.concurrent.impl.promise$defaultpromise.ready(promise.scala:219) ~[scala-library-2.11.7.jar:na] @ scala.concurrent.impl.promise$defaultpromise.ready(promise.scala:153) ~[scala-library-2.11.7.jar:na] @ scala.concurrent.await$$anonfun$ready$1.apply(package.scala:169) ~[scala-library-2.11.7.jar:na] @ scala.concurrent.await$$anonfun$ready$1.apply(package.scala:169) ~[scala-library-2.11.7.jar:na] @ akka.dispatch.monitorablethreadfactory$akkaforkjoinworkerthread$$anon$3.block(threadpoolbuilder.scala:169) ~[akka-actor_2.11-2.3.13.jar:na] @ scala.concurrent.forkjoin.forkjoinpool.managedblock(forkjoinpool.java:3640) [scala-library-2.11.7.jar:na] @ akka.dispatch.monitorablethreadfactory$akkaforkjoinworkerthread.blockon(threadpoolbuilder.scala:167) ~[akka-actor_2.11-2.3.13.jar:na] @ scala.concurrent.await$.ready(package.scala:169) ~[scala-library-2.11.7.jar:na] @ reactivemongo.api.defaultcursor$impl$$anonfun$awaitfailover$1.apply(cursor.scala:474) ~[reactivemongo_2.11-0.11.10.jar:0.11.10] @ reactivemongo.api.defaultcursor$impl$$anonfun$awaitfailover$1.apply(cursor.scala:474) ~[reactivemongo_2.11-0.11.10.jar:0.11.10]
also when start app (connect reactivemongo driver mongodb) output:
[info] r.c.actors.mongodbsystem - node set authenticated [info] r.c.actors.mongodbsystem - node set authenticated [info] r.c.actors.mongodbsystem - primary authenticated [info] r.c.actors.mongodbsystem - primary authenticated [info] r.c.actors.mongodbsystem - node set authenticated [info] r.c.actors.mongodbsystem - node set authenticated [info] r.c.actors.mongodbsystem - primary authenticated [info] r.c.actors.mongodbsystem - primary authenticated [info] r.c.actors.mongodbsystem - node set authenticated [info] r.c.actors.mongodbsystem - node set authenticated [info] r.c.actors.mongodbsystem - primary authenticated [info] r.c.actors.mongodbsystem - primary authenticated [info] r.c.actors.mongodbsystem - node set authenticated [info] r.c.actors.mongodbsystem - node set authenticated [info] r.c.actors.mongodbsystem - primary authenticated [info] r.c.actors.mongodbsystem - primary authenticated [info] r.c.actors.mongodbsystem - node set authenticated [info] r.c.actors.mongodbsystem - node set authenticated [info] r.c.actors.mongodbsystem - primary authenticated [info] r.c.actors.mongodbsystem - primary authenticated [info] r.c.actors.mongodbsystem - node set authenticated [info] r.c.actors.mongodbsystem - node set authenticated [info] r.c.actors.mongodbsystem - primary authenticated [info] r.c.actors.mongodbsystem - primary authenticated [info] r.c.actors.mongodbsystem - node set authenticated [info] r.c.actors.mongodbsystem - node set authenticated [info] r.c.actors.mongodbsystem - primary authenticated [info] r.c.actors.mongodbsystem - primary authenticated [info] r.c.actors.mongodbsystem - node set authenticated [info] r.c.actors.mongodbsystem - node set authenticated [info] r.c.actors.mongodbsystem - primary authenticated [info] r.c.actors.mongodbsystem - primary authenticated [info] r.c.actors.mongodbsystem - node set authenticated [info] r.c.actors.mongodbsystem - node set authenticated [info] r.c.actors.mongodbsystem - primary authenticated [info] r.c.actors.mongodbsystem - primary authenticated [info] r.c.actors.mongodbsystem - node set authenticated [info] r.c.actors.mongodbsystem - node set authenticated [info] r.c.actors.mongodbsystem - primary authenticated [info] r.c.actors.mongodbsystem - primary authenticated
why much? how debug kind of stuff.
edit:
i connect mongolab.com mongodb tried this:
val defaultstrategy = failoverstrategy() val customstrategy = failoverstrategy( delayfactor = attempt => 10 ) // database-wide strategy val db = connection.db("dbname", customstrategy)
but saw timeout of 10500! network fine, omg wrong reactivemongo?
i have this:
val rm = "org.reactivemongo" %% "reactivemongo" % "0.11.10" val prm = "org.reactivemongo" %% "play2-reactivemongo" % "0.11.10"
what error mean (it doesn't crash app or why), , kind of code causes this?
i have same problem, steadily reproduce while testing.
i tried switching reactivemongo fresh release 0.11.11 exception stopped, whole system performance went down.
my final solution - increase number of connections, , change failover strategy
val mongodriver = new mongodriver(some(configuration.underlying)) runtime.getruntime().addshutdownhook(new thread() { override def run() = { mongodriver.close() } }) val connectionoptions = mongoconnectionoptions( nbchannelspernode = 40, connecttimeoutms = 5000 ) val mongoconnection: mongoconnection = mongodriver.connection(list(mongohost), connectionoptions) val customstrategy = failoverstrategy( retries = 8, delayfactor = n => n * 1.5 ) mongoconnection(mongodb, customstrategy)
now don't see them, or harder reproduce.
Comments
Post a Comment