I have one actor that sends a message to another actor. There is a message logged that the message is sent and a message logged that it was received, then later there is a message saying that the message could not be delivered. Is this normal?
Essentially, I have (java):
ActorRef actorB = system.actorOf(Props.create(ActorB.class), "actorb");
ActorRef actorA = system.actorOf(Props.create(ActorA.class, actorB), "actora");
actorA.tell(START, ActorRef.noSender());
ReceiveBuilder.matchEquals(START, ignored -> actorBRef.tell(START, self()))
.matchEquals(STOP, ignored -> context().system().terminate())
.build();
ActorB's receive method:
ReceiveBuilder.matchEquals(START, ignored -> {
// do stuff
sender().tell(STOP, self());
context().stop(self());
})
.build();
The log shows ActorA sent START to ActorB, ActorB received START and sent STOP to ActorA. Then later the dispatcher logs a message that ActorA's START message was not delivered to ActorB.
Is ActorB supposed to do something to indicate to the dispatcher that it received the message? I am guessing it has to do ActorB teliing itself to stop. Or, why is complaining about a message not being sent after it was sent and received?