Uploaded image for project: 'Medici'
  1. Medici
  2. MMDB-1573

MongoDB (or GridFS) issue on file bytes retrieval when Medici is busy with large files.

XMLWordPrintableJSON

      This happens sometimes when uploading large files (like a ZIP file containing 450 MB of PTM files).

      Execution exception[[ClassCastException: com.mongodb.gridfs.GridFSDBFile cannot be cast to com.mongodb.casbah.gridfs.GridFSDBFileSafeJoda]]

      in
      files.findOne(MongoDBObject("_id" -> new ObjectId(id.stringify))) match

      { case Some(file) => Some(file.inputStream, file.getAs[String]("filename").getOrElse("unknown-name"), file.getAs[String]("contentType").getOrElse("unknown"), file.getAs[Long]("length").getOrElse(0)) case None => None }

      in MongoDBFileService, getBytes()

      Is this a performance (system resources insufficiency/overload) issue?

      Full error log:
      2014-07-07 18:42:23,753 - [ERROR] - from application in play-akka.actor.default-dispatcher-44

      ! @6in9p8j1h - Internal server error, for (GET) [/api/files/53bae25b0cf2f9bd6fe6e447?key=r1ek3rs] ->

      play.api.Application$$anon$1: Execution exception[[ClassCastException: com.mongodb.gridfs.GridFSDBFile cannot be cast to com.mongodb.casbah.gridfs.GridFSDBFileSafeJoda]]
      at play.api.Application$class.handleError(Application.scala:293) ~[com.typesafe.play.play_2.10-2.2.1.jar:2.2.1]
      at play.api.DefaultApplication.handleError(Application.scala:399) [com.typesafe.play.play_2.10-2.2.1.jar:2.2.1]
      at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$12$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:165) [com.typesafe.play.play_2.10-2.2.1.jar:2.2.1]
      at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$12$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:162) [com.typesafe.play.play_2.10-2.2.1.jar:2.2.1]
      at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33) [org.scala-lang.scala-library-2.10.3.jar:na]
      at scala.util.Failure$$anonfun$recover$1.apply(Try.scala:185) [org.scala-lang.scala-library-2.10.3.jar:na]
      at scala.util.Try$.apply(Try.scala:161) [org.scala-lang.scala-library-2.10.3.jar:na]
      at scala.util.Failure.recover(Try.scala:185) [org.scala-lang.scala-library-2.10.3.jar:na]
      at scala.concurrent.Future$$anonfun$recover$1.apply(Future.scala:324) [org.scala-lang.scala-library-2.10.3.jar:na]
      at scala.concurrent.Future$$anonfun$recover$1.apply(Future.scala:324) [org.scala-lang.scala-library-2.10.3.jar:na]
      at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32) [org.scala-lang.scala-library-2.10.3.jar:na]
      at play.api.libs.iteratee.Execution$$anon$1.execute(Execution.scala:43) [com.typesafe.play.play-iteratees_2.10-2.2.1.jar:2.2.1]
      at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:40) [org.scala-lang.scala-library-2.10.3.jar:na]
      at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:248) [org.scala-lang.scala-library-2.10.3.jar:na]
      at scala.concurrent.Promise$class.complete(Promise.scala:55) [org.scala-lang.scala-library-2.10.3.jar:na]
      at scala.concurrent.impl.Promise$DefaultPromise.complete(Promise.scala:153) [org.scala-lang.scala-library-2.10.3.jar:na]
      at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:249) [org.scala-lang.scala-library-2.10.3.jar:na]
      at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:249) [org.scala-lang.scala-library-2.10.3.jar:na]
      at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32) [org.scala-lang.scala-library-2.10.3.jar:na]
      at play.api.libs.iteratee.Execution$$anon$2.execute(Execution.scala:70) [com.typesafe.play.play-iteratees_2.10-2.2.1.jar:2.2.1]
      at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:40) [org.scala-lang.scala-library-2.10.3.jar:na]
      at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:248) [org.scala-lang.scala-library-2.10.3.jar:na]
      at scala.concurrent.Promise$class.complete(Promise.scala:55) [org.scala-lang.scala-library-2.10.3.jar:na]
      at scala.concurrent.impl.Promise$DefaultPromise.complete(Promise.scala:153) [org.scala-lang.scala-library-2.10.3.jar:na]
      at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:23) [org.scala-lang.scala-library-2.10.3.jar:na]
      at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:42) [com.typesafe.akka.akka-actor_2.10-2.2.0.jar:2.2.0]
      at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386) [com.typesafe.akka.akka-actor_2.10-2.2.0.jar:2.2.0]
      at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) [org.scala-lang.scala-library-2.10.3.jar:na]
      at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) [org.scala-lang.scala-library-2.10.3.jar:na]
      at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) [org.scala-lang.scala-library-2.10.3.jar:na]
      at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) [org.scala-lang.scala-library-2.10.3.jar:na]
      Caused by: java.lang.ClassCastException: com.mongodb.gridfs.GridFSDBFile cannot be cast to com.mongodb.casbah.gridfs.GridFSDBFileSafeJoda
      at com.mongodb.casbah.gridfs.GridFS.findOne(GridFS.scala:215) ~[org.mongodb.casbah-gridfs_2.10-2.6.3.jar:2.6.3]
      at services.mongodb.MongoDBFileService.getBytes(MongoDBFileService.scala:191) ~[medici-play.medici-play-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
      at api.Files$$anonfun$download$1.apply(Files.scala:120) ~[medici-play.medici-play-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
      at api.Files$$anonfun$download$1.apply(Files.scala:118) ~[medici-play.medici-play-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
      at api.ApiController$$anonfun$SecuredAction$1.apply(ApiController.scala:33) ~[medici-play.medici-play-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
      at api.ApiController$$anonfun$SecuredAction$1.apply(ApiController.scala:25) ~[medici-play.medici-play-1.0-SNAPSHOT.jar:1.0-SNAPSHOT]
      at play.api.mvc.ActionBuilder$$anonfun$apply$10.apply(Action.scala:221) ~[com.typesafe.play.play_2.10-2.2.1.jar:2.2.1]
      at play.api.mvc.ActionBuilder$$anonfun$apply$10.apply(Action.scala:220) ~[com.typesafe.play.play_2.10-2.2.1.jar:2.2.1]
      at play.api.mvc.Action$.invokeBlock(Action.scala:357) ~[com.typesafe.play.play_2.10-2.2.1.jar:2.2.1]
      at play.api.mvc.ActionBuilder$$anon$1.apply(Action.scala:309) ~[com.typesafe.play.play_2.10-2.2.1.jar:2.2.1]
      at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:109) ~[com.typesafe.play.play_2.10-2.2.1.jar:2.2.1]
      at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:109) ~[com.typesafe.play.play_2.10-2.2.1.jar:2.2.1]
      at play.utils.Threads$.withContextClassLoader(Threads.scala:18) ~[com.typesafe.play.play_2.10-2.2.1.jar:2.2.1]
      at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:108) ~[com.typesafe.play.play_2.10-2.2.1.jar:2.2.1]
      at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:107) ~[com.typesafe.play.play_2.10-2.2.1.jar:2.2.1]
      at scala.Option.map(Option.scala:145) ~[org.scala-lang.scala-library-2.10.3.jar:na]
      at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:107) ~[com.typesafe.play.play_2.10-2.2.1.jar:2.2.1]
      at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:100) ~[com.typesafe.play.play_2.10-2.2.1.jar:2.2.1]
      at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:481) ~[com.typesafe.play.play-iteratees_2.10-2.2.1.jar:2.2.1]
      at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:481) ~[com.typesafe.play.play-iteratees_2.10-2.2.1.jar:2.2.1]
      at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:517) ~[com.typesafe.play.play-iteratees_2.10-2.2.1.jar:2.2.1]
      at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:517) ~[com.typesafe.play.play-iteratees_2.10-2.2.1.jar:2.2.1]
      at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$13.apply(Iteratee.scala:493) ~[com.typesafe.play.play-iteratees_2.10-2.2.1.jar:2.2.1]
      at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$13.apply(Iteratee.scala:493) ~[com.typesafe.play.play-iteratees_2.10-2.2.1.jar:2.2.1]
      at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) [org.scala-lang.scala-library-2.10.3.jar:na]
      at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) [org.scala-lang.scala-library-2.10.3.jar:na]
      ... 6 common frames omitted

              kooper Rob Kooper
              csophocleous Constantinos Sophocleous
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: