Hi, I'm developing a system based on Akka and I got stuck with situation
which is completely unclear for me.
I have three actors with following hierarchy: Root actor ->
SubPathProcessingSupervisor -> SubPathFinderActor.
Root actor creates "SubPathProcessingSupervisor " one during preStart and
then tries to send message to it using ask pattern.
//Root actor
@Override
public void preStart() throws Exception {
super.preStart();
this.subPathProcessingSupervisor =
context().actorOf(Props.create(SubPathProcessingSupervisor.class));
this.pathModelsAggregatorSupervisor =
context().actorOf(Props.create(PathModelsAggregatorSupervisor.class));
this.waitingDuration = (int)readConfig("akka.actor.timeouts",
"subPathFindingAskDuration", 5000);
}
//...
private Iterable<Future<Object>>
process(ConfiguredPathProcessingRequest request) {
Collection<Future<Object>> result = new ArrayList<>();
for (int ceSize = request.minCoverElementSize; ceSize <=
request.path.getMaxCoverElementSize(); ceSize += 2) {
for (int segSize = request.minCoverElementSize; segSize <=
ceSize; segSize += 2) {
Future<Object> future =
Patterns.ask(subPathProcessingSupervisor,
new SubPathProcessingRequest(request.path, ceSize,
segSize), waitingDuration);
result.add(future);
}
}
return result;
}
SubPathProcessingSupervisor has following structure:
public class SubPathProcessingSupervisor extends LoggingActor{
@Override
public void onReceive(Object o) throws Exception {
logger.info("SubPathProcessingSupervisor : Message received...");
if(o instanceof SubPathProcessingRequest) {
ActorRef subPathProcessorActor =
context().actorOf(Props.create(SubPathFinderActor.class));
subPathProcessorActor.forward(o, context());
} else {
unhandled(o);
}
}
}
>From time to time, when I am trying to debug my application I see following
messages:
Either:
> [INFO] [05/03/2015 13:43:48.413]
> [application-akka.actor.default-dispatcher-9]
> [akka://application/user/localProcessor/$a/$a/$b/$a/$a/$a] Message
> [kernel.modeller.data.messages.SubPathProcessingRequest] from
> Actor[akka://application/temp/$a] to
> Actor[akka://application/user/localProcessor/$a/$a/$b/$a/$a/$a#342530440]
> was not delivered. [1] 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'.
Or:
> [INFO] [05/03/2015 13:44:18.962]
> [application-akka.actor.default-dispatcher-2]
> [akka://application/user/localProcessor/$b/$a/$b/$b/$a] Message
> [kernel.modeller.data.messages.SubPathProcessingRequest] from
> Actor[akka://application/temp/$c] to
> Actor[akka://application/user/localProcessor/$b/$a/$b/$b/$a#-285620982] was
> not delivered. [3] 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'.
I am really confused with this issue because there are some successful
attempts... But in most cases messages were not delivered
to SubPathProcessingSupervisor, and very rarely from supervisor to
SubPathFinderActor. Each attempt may have different results with the same
input. Could you please help me to understand what is going on here?
--
>>>>>>>>>> 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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.