1

私は CappedCollection デモの例に従い、Play 2.2 でキャップ付きコレクションを消費する Iteratee を取得しましたが、問題はありませんでした。Play 2.3 にアップグレードした後、Iteratee を停止しようとすると奇妙な問題が発生します。プレイがシャットダウンされると、onStop にフックして iteratee buy 呼び出しの実行を停止しようとしますが、Await の内容に関係なく、常にタイムアウトが発生します。これは、withApplication を使用する単体テストでも発生しています。これは、play 2.3 および reactmongo/play2-reactive mongo"0.10.5.0.akka23" へのアップグレードまで問題なく動作していました。最初は、Play が最初に Akka をシャットダウンすることに問題があるのではないかと考えましたが、ReactiveMongoPlugin が 1200 に設定されていることを確認しました。これは Akka の前にシャットダウンする必要があります。

どんな助けでも感謝します!

モンゴ バージョン 2.6.3

Here is my setup code 
//Some JSONCollection

           collection
           .find(Jons.obj())
           .hint(Json.obj("$natural" -> 1))
           .options(QueryOpts().tailable.awaitData)
          .cursor[Model])

        val enumerator = cursor.get.enumerate()

        iteratee = Iteratee.flatten(enumerator |>> process())
    }

    //Iteratee returned for 
    def process(): Iteratee[Model, Unit] = {
    Iteratee.foreach { model =>

          //Do something with model class
          process(model)
        }

    //Called by Global.onStop()
    def stop(): Unit=  {

        val result = iteratee.run.andThen {
          case r => saveIndex()
         } andThen {
            case Success(x) => Logger.info("Successful exit iteratee")
            case Failure(ex) => Logger.error("", ex)
         }

       //This always times out on shutdown
       Await.result(f, 10 seconds)


    }

//例外

til.concurrent.TimeoutException: Futures timed out after [10 seconds]
        at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:219) ~[scala-library-2.11.1.jar:na]
        at scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:223) ~[scala-library-2.11.1.jar:na]
        at scala.concurrent.Await$$anonfun$result$1.apply(package.scala:111) ~[scala-library-2.11.1.jar:na]
        at scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53) ~[scala-library-2.11.1.jar:na]
        at scala.concurrent.Await$.result(package.scala:111) ~[scala-library-2.11.1.jar:na]
4

0 に答える 0