Skip to content
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

Fix an inconstant ToString on ConsistentRoutee when the node is remot… #3164

Merged
merged 1 commit into from
Oct 19, 2017
Merged

Fix an inconstant ToString on ConsistentRoutee when the node is remot… #3164

merged 1 commit into from
Oct 19, 2017

Conversation

annymsMthd
Copy link
Contributor

…e vs local

Signed-off-by: Joshua Benjamin benjamin@syncromatics.com

@annymsMthd
Copy link
Contributor Author

This bug is pretty nasty and is affecting us when we have a router that includes a local routee with Consistent hashing. Is there a way we can get this one fast tracked into a release?

@Aaronontheweb
Copy link
Member

@annymsMthd oh wow.. that IS nasty. Might have one bit of feedback though.

Copy link
Member

@Aaronontheweb Aaronontheweb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have some minor changes that need to be made for the sake of posterity

var a2 = new Address("akka.tcp", "RemoteConsistentHashingRouterSpec-1", "client2", 2552);
var localActor = Sys.ActorOf(Props.Empty, "a");

var s1 = new ActorRefRoutee(localActor);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should add a comment here / something that makes it obvious how this reproduces the bug

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added it on the method

.Select(k => consistentHash2.NodeFor(k))
.Select(routee => routee.ToString());

Assert.Equal(result2, result1);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This does a .SequenceEqual call under the covers?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think so. I can do a FluentAssertion here that's much clearer.

@@ -292,7 +292,7 @@ public override string ToString()
case ActorRefRoutee actorRef:
return ToStringWithFullAddress(actorRef.Actor.Path);
case ActorSelectionRoutee selection:
return ToStringWithFullAddress(selection.Selection.Anchor.Path) +
return ToStringWithFullAddress(selection.Selection.Anchor.Path).TrimEnd('/') +
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So it was just the trailing slash that created this issue?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup. It results in double slashes. When everything is remote it works because they all have it. If you have a local routee you start seeing a little weirdness.

@Aaronontheweb
Copy link
Member

@annymsMthd does this need to be tested on clustered consistent hash routers also? Or is the test case here sufficient?

@annymsMthd
Copy link
Contributor Author

annymsMthd commented Oct 19, 2017

Since the Clustered router uses the ConsistentHash in it's internals I think it should be fine just testing it at this level. I'm on a bus but once I get into the office I'll update this PR with your suggestions.

…e vs local

Signed-off-by: Joshua Benjamin <benjamin@syncromatics.com>
@Aaronontheweb Aaronontheweb merged commit 85dae97 into akkadotnet:dev Oct 19, 2017
@annymsMthd annymsMthd deleted the feature/fix-inconsistent-consistent-routee branch October 20, 2017 02:30
@Aaronontheweb Aaronontheweb added this to the 1.3.2 milestone Oct 20, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants