Hi Guys, We're using Akka 2.4.1 in one of our Java projects at work and i'm trying to understand an unusual case which causes our tests infrequently fail when run as part of our maven multithreaded build.
Here's a gist which describes what the test is doing https://gist.github.com/patelm5/4e4f82e62ccd230a00cf#file-gistfile1-java The Actor under test is simply performing a forward in the receive, using some dynamic property to get an actor selection ( in this case its 74 ). Here's what a successful run logs : 14:19:29.863 [main] INFO org.mikeyp.ForwardingActor - started forwarding actor fowarding from akka://LookupActorTest1/user/lookup-source-74 -> akka://LookupActorTest1/system/LookupActorTest2-1 14:19:30.364 [main] WARN org.mikeyp.LookupActor - Started onReceive Thread main, Dispatcher is class akka.testkit.CallingThreadDispatcher 14:19:30.373 [main] WARN org.mikeyp.ForwardingActor - forwarding message given to me akka://LookupActorTest1/user/lookup-source-74 to actor akka://LookupActorTest1/system/LookupActorTest2-1, thread main, dispatcher is akka.testkit.CallingThreadDispatcher@1827a871 14:19:30.375 [main] WARN org.mikeyp.AbstractActorTest - Shutting it down 14:19:30.381 [LookupActorTest1-akka.actor.default-dispatcher-4] INFO org.mikeyp.ForwardingActor - stopped forwarding actor fowarding from akka://LookupActorTest1/user/lookup-source-74 -> akka://LookupActorTest1/system/LookupActorTest2-1 Curiously, under certain conditions ( usually a maven multithreaded build ) the logging output differs slightly and prints 10:17:56.918 [main] INFO org.mikeyp.ForwardingActor - started forwarding actor [akka://ActorTest99/user/lookup-source-74] -> [akka://ActorTest99/system/ActorTest100-199] 10:17:56.918 [main] WARN org.mikeyp.LookupActor - Started onReceive Thread main, Dispatcher is class akka.testkit.CallingThreadDispatcher [INFO] [01/08/2016 10:17:56.920] [ActorTest99-akka.actor.default-dispatcher-5] [akka://ActorTest99/user/lookup-source-74] Message [org.mikeyp.LookupResponse] from Actor[akka://ActorTest99/system/ActorTest100-199#1098554928] to Actor[akka://ActorTest99/user/lookup-source-74] was not delivered. [2] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. 10:18:00.995 [main] WARN org.mikeyp.AbstractActorTest - Shutting it down The dead letter obviously causes the test to fail, but why is there a dead letter ? If the actor had stopped, presumably my log message would have fired in my forwarding actor. So I suspected that it might be to do with the actor not being ready to receive messages somehow, despite the preStart method having already been called. Is there a case where this can happen that i'm not aware of, reading the documentation suggests this shouldn't be the case ? I was able to make the build very stable by adding a short wait after creating the actor, which I suppose I could replace with an ask of some kind to check it's ready. I'd just like to understand if this is necessary in the test. Cheers, Mike. -- >>>>>>>>>> Read the docs: http://akka.io/docs/ >>>>>>>>>> Check the FAQ: >>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user --- You received this message because you are subscribed to the Google Groups "Akka User List" group. To unsubscribe from this group and stop receiving emails from it, send an email to akka-user+unsubscr...@googlegroups.com. To post to this group, send email to akka-user@googlegroups.com. Visit this group at https://groups.google.com/group/akka-user. For more options, visit https://groups.google.com/d/optout.