-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ActorSelection fails for ActorPath from remotely deployed actors #1544
Comments
Scaka version for comparison: override def getChild(names: Iterator[String]): InternalActorRef = {
@tailrec
def rec(s: String, n: Int): (InternalActorRef, Int) = {
import akka.actor.ActorCell._
val (childName, uid) = splitNameAndUid(s)
getChild(childName) match {
case null ⇒
val last = s.lastIndexOf('/')
if (last == -1) (Nobody, n)
else rec(s.substring(0, last), n + 1)
case ref if uid != undefinedUid && uid != ref.path.uid ⇒ (Nobody, n)
case ref ⇒ (ref, n)
}
}
val full = Vector() ++ names
rec(full.mkString("/"), 0) match {
case (Nobody, _) ⇒ Nobody
case (ref, 0) ⇒ ref
case (ref, n) ⇒ ref.getChild(full.takeRight(n).iterator)
}
}
final def splitNameAndUid(name: String): (String, Int) = {
val i = name.indexOf('#')
if (i < 0) (name, undefinedUid)
else (name.substring(0, i), Integer.valueOf(name.substring(i + 1)))
} |
I will take it. |
@alexpantyukhin would you also submit a test case to ensure that this won't reappear in the future? |
okay. I will |
Also, before starting this. If not, then the issue resides elsewhere. |
Also would be great to port missing specs from https://github.com/akka/akka/blob/master/akka-remote/src/test/scala/akka/remote/RemotingSpec.scala#L360 |
Looks like problem with transport protocol matching here but scala version has the same issue for remote ActorSelection e.g. local and client systems has different protocols e.g. akka and akka.tcp
I've prepared gist |
@Horusiath @rogeralsing @maxim-s |
@Silv3rcircl3 do you have any log files? I can check but need more details |
@maxim-s even better, I have a bunch of failing specs for you ;) |
@Silv3rcircl3 can we consider this solved? |
@Horusiath nop, it's still not working for deployed actors. See my #2196 (comment) |
Looks like this is fixed @Silv3rcircl3 can you confirm ? |
@Danthar nope spec is still failing |
Fantastic, thanks guys! |
@object happy to do it - should be rolled into the latest nightlies tonight |
Perfect timing for us! |
…kadotnet#1544 * fixed RemoteActorRef.GetChild * fixed the first set of issues related to akkadotnet#1544 * close akkadotnet#3459 - just block until lock is available inside BlockingQueue * close akkadotnet#3450 - don't let SplitBrainResolver log 'partition detected' messages when there are no unreachable nodes * close akkadotnet#3420 - verified that wildcard ActorSelections actually do get delivered to deadletters when there's no matching recipient
Right now
ActorSelection
doesn't work when combined with path taken from remotely deployed actor:This operation will timeout - actor won't be find under provided path. Also any messages that will be send under actor selection specified that way will be send to dead letters on the remote node.
I don't know what is expected behavior on the JVM side for that.
The text was updated successfully, but these errors were encountered: