In my supervisor actor a message is sent by child actor to indicate its completed. I then stop this actor within the onReceive method :
@Override
public void onReceive(Object msg) {
if (msg == Messages.SUCCESS) {
getContext().stop(getSender());
}
}
But this results in following message being printed :
[INFO] [10/24/2014 12:12:43.102] [Main-akka.actor.default-dispatcher-6] [akka://Main/user/app/$l] Message [akka.dispatch.sysmsg.Terminate] from Actor[akka://Main/user/app/$l#1444168887] to Actor[akka://Main/user/app/$l#1444168887] was not delivered. [6] 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'.
Is this expected behaviour ? Can these messages be ignored ? Is it required to explicitly stop the actor or will it just stop once its run to completion and become eligible for garbage collection?
Update : it is required to explicitly stop an actor as it will not be stopped by akka framework :
Akka: Cleanup of dynamically created actors necessary when they have finished?