1

MongoLab 2.6 データベースに対して Heroku で実行されている ReactiveMongo を使用して、Scala Play 2.3 アプリが完全に正常に動作していましたが、MongoLab がサンドボックス データベースを 3.0 に更新したため、アプリを起動できません。

ローカル データベースを 3.0 に更新しました。

http://reactivemongo.org/releases/0.11/documentation/tutorial/play2.htmlの 2.3の指示に従いましたが、次のようなスタック トレースが得られます。

--- (SBT からアプリケーションを実行し、自動リロードが有効になっています) ---

[info] play - /0:0:0:0:0:0:0:0:9000 で HTTP をリッスンしています

(サーバーが起動しました。Ctrl+D を使用して停止し、コンソールに戻ります...)

[情報] アプリケーション - ReactiveMongoPlugin を開始しています... [情報] アプリケーション - ReactiveMongoPlugin が db 'sites' で正常に開始されました! サーバー: [localhost:27017] [info] play - アプリケーションが開始されました (Dev) [ERROR] [10/02/2015 11:34:11.472] [play-akka.actor.default-dispatcher-7] [ActorSystem(play) ] 'akka.jvm-exit-on-fatal-error' が有効になっているため、スレッド [play-akka.actor.default-dispatcher-7] が JVM をシャットダウンしているときにキャッチされないエラーが発生しました akka.actor.ActorCell.receiveMessage で java.lang.AbstractMethodError (ActorCell.scala:516) akka.actor.ActorCell.invoke(ActorCell.scala:487) で akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238) で akka.dispatch.Mailbox.run(Mailbox.scala: 220) akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.

[エラー] [10/02/2015 11:34:11.473] [play-akka.actor.default-dispatcher-8] [ActorSystem(play)] スレッドからのキャッチされないエラー [play-akka.actor.default-dispatcher-8 ] 'akka.jvm-exit-on-fatal-error' が有効になっているため、JVM をシャットダウンしていますActorSystem[play] java.lang.AbstractMethodError at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516) at akka.actor.ActorCell.invoke(ActorCell.scala:487) に対して -exit-on-fatal-error' が有効) akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238) で akka.dispatch.Mailbox.run(Mailbox.scala:220) で akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393) で scala .concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) で akka.actor.ActorCell.create(ActorCell.scala:580) で scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) で scala .concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) で scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) で akka.actor.ActorCell.invokeAll$1(ActorCell.scala:456) で akka .actor.ActorCell.systemInvoke(ActorCell.scala:478)concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:456) at akka.actor.ActorCell.systemInvoke(ActorCell.scala:478)concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:456) at akka.actor.ActorCell.systemInvoke(ActorCell.scala:478)

参照を ...default.BSONCollection から ...bson.BSONCollection などに更新しました。

私は次の設定を使用しています:

mongodb.uri = "mongodb://localhost:27017/sites" 

mongo-async-driver {   

  akka {

    loglevel = WARNING   

  } 

}

私のアプリの依存関係は次のとおりです。

"org.reactivemongo" %% "play2-reactivemongo" % "0.11.7.play23")

上記のスタックトレースが実際に何を意味するのか理解できないので、誰かがアドバイスできますか?

4

1 に答える 1

1

スタックトレースで何が起こっているのか完全にはわかりませんがakka.jvm-exit-on-fatal-error、クラッシュの原因を出力するのではなく、その設定がアプリのクラッシュを引き起こしているようです

ドキュメントを読むと、次のようにして無効にできる場合があります。

jvm-exit-on-fatal-error = off

あなたのakka構成で。次に、より詳細なスタックトレースを取得する場合があります

http://doc.akka.io/docs/akka/snapshot/general/configuration.html

ただし、MongoLab で Mongo 3.0 にアップグレードした後、致命的なエラーも発生しました。私のエラーはこれでした:

DatabaseException['not authorized for query on auth-test.user' (code = 13)]

2.6 とは異なる認証を使用する 3.0 が原因

mongo 2.6 は MONGODB-CR 認証プロトコルを使用し、3.0 はデフォルトで MONGODB-SHA-1 を使用します。

解決するために、MongoURI を次のように authMode を含めるように変更しました。

mongodb.uri = "mongodb://user:password@ds049621.mongolab.com:49431/DBName?authMode=scram-sha1"
于 2015-10-02T13:08:00.777 に答える