avoid akka terminate webapp JVM Process

3.6k Views Asked by At

How do I avoid Akka terminate the JVM PROCESS when some unexpected exception occurs?. I think it is a big problem.

Akka should never kill the jvm process of my webapp.

I am using play framework 2.3.

Use case:

Uncaught error from thread [SuperActorSystem-akka.actor.default-dispatcher-5] shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled
java.lang.ExceptionInInitializerError
    at actors.SMSSenderActor$$anonfun$receive$1.applyOrElse(SMSSenderActor.scala:40)
    at akka.actor.Actor$class.aroundReceive(Actor.scala:465)
    at actors.SMSSenderActor.aroundReceive(SMSSenderActor.scala:14)
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
    at akka.actor.ActorCell.invoke(ActorCell.scala:487)
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
    at akka.dispatch.Mailbox.run(Mailbox.scala:220)
    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)
Caused by: java.util.NoSuchElementException: None.get
    at scala.None$.get(Option.scala:322)
    at scala.None$.get(Option.scala:320)
    at gcm.GCMUtil$.initializeCCS(GCMUtil.scala:15)
    at gcm.GCMUtil$.<init>(GCMUtil.scala:10)
    at gcm.GCMUtil$.<clinit>(GCMUtil.scala)
    ... 12 more


    at actors.SMSSenderActor.aroundReceive(SMSSenderActor.scala:14)
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
    at akka.actor.ActorCell.invoke(ActorCell.scala:487)
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
    at akka.dispatch.Mailbox.run(Mailbox.scala:220)
    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)
Caused by: java.util.NoSuchElementException: None.get
    at scala.None$.get(Option.scala:322)
    at scala.None$.get(Option.scala:320)
    at gcm.GCMUtil$.initializeCCS(GCMUtil.scala:15)
    at gcm.GCMUtil$.<init>(GCMUtil.scala:10)
    at gcm.GCMUtil$.<clinit>(GCMUtil.scala)

Thanks.

1

There are 1 best solutions below

2
On

The solution was add the following to my application.conf in my playframework app:

akka{  
    jvm-exit-on-fatal-error = off
}

That's the way I can override the default parameters of akka in a play app. Thanks to All.