What is the reason for that : "resolve of path sequence [/system/ddataReplicator/$PYi#-1343927577] failed"

Hi all.

I made cluster of two nodes on the same host with role " ddtest " with following configuration :

akka {
actor {
provider = “cluster”
serializers {
java = “akka.serialization.JavaSerializer”
proto = “akka.remote.serialization.ProtobufSerializer”
}
serialization-bindings {
“java.lang.String” = java
“java.io.Serializable” = java
}
}

remote {
log-remote-lifecycle-events = off
log-frame-size-exceeding = 1000b
netty.tcp {
hostname = “127.0.0.1”
port = 0
}
}

cluster {
seed-nodes = [
“akka.tcp://Demo@127.0.0.1:2551”,
“akka.tcp://Demo@127.0.0.1:2552”]

}
loglevel = “DEBUG”
}

akka.cluster.distributed-data {
name = ddataReplicator
role = “competition”
gossip-interval = 5000 ms
notify-subscribers-interval = 500 ms
max-delta-elements = 1000
use-dispatcher = “”
pruning-interval = 120 s
max-pruning-dissemination = 300 s
pruning-marker-time-to-live = 6 h
serializer-cache-time-to-live = 10s

delta-crdt {
enabled = on
max-delta-size = 200
}
}

Then i create another actor node with role - “client” , which must perform payload to random node with delay in 1 ms . Each payload modifies one entity from LWWMap.

Each actor of ddtest role contains 250 entities in LWWMap and uses consistency level : WriteMajority , ReadMajority with 3 seconds

I ran “client” that sended 20000 payloads and it completed but in logs i have many messages :

[DEBUG] [04/05/2018 16:58:57.202] [Demo-akka.remote.default-remote-dispatcher-8] [akka.actor.LocalActorRefProvider(akka://Demo)] resolve of path sequence [/system/ddataReplicator/$Tqi#598357737] failed

Could you explain what does it means ?

That debug log message is when deserializing an ActorRef path and corresponding actor doesn’t exist (any more), probably because it was stopped.

In Distributed Data the write requests are sent in parallel to other nodes and when enough (majority) replies have been collected the write is considered successful. This aggregation of replies is done by a temporary child actor (“ddataReplicator/$Tqi”) which is stopped when enough replies have been collected. It sends out more requests than the minimum number and therefore some replies may arrive after the aggregator actor has been stopped.

This is completely harmless debug logging, but I opened a pull request for improving the log messages.